linux脚本无法执行命令,为什么Shell脚本执行不成功?原来是这样

Shell脚本语言是linux系统中内置的一门非常强大的语言,非常善于处理操作系统层面的应用,我们从网上下载的很多应用的安装和启动往往都是用Shell脚本语言写的。可是初步开始使用linux的小伙伴是不是经常会有些应用下载下来,不知道怎么安装或者启动,甚至有的根据作者的安装说明都操作错误。然后就责怪linux系统操作复杂,不人性化等等。还有的小伙伴自己学习linux的时候,看到网上一段不错的代码,复制下来想用下,可是怎么都用不起来,就怪代码不全或者作者骗人。其实,Shell脚本的书写和执行都有很多注意事项的,因为我们平时使用的少,所以没有注意到,今天小编就带大家来一一熟悉下吧!

1、“#!”使用有讲究

#!这一组符号如果出现在脚本的第一行,代表的是指定该shell脚本用哪种类型的shell来解释和执行,即指定解释器。如果#!这个符号出现的位置不是第一行,那么代表这一行是注释行,脚本不执行。如下图所示,#!/bin/bash这一行代表这个脚本是用的bash这个shell来执行的;第三行那个#!就代表这一行是注释的。

0a2528c3b86f8d2be47d24b360b98c47.png图1

我们有时候从网上下载下来的shell脚本不好用,可能就是第一行的Shell脚本语言解释器和我们的默认shell版本不一致导致的。一般我们需要根据第一行的内容来指定解释器。

如果是#!/bin/bash,我们就用bash test.sh来执行test.sh;

如果是#!/bin/dash,我们就用dash test.sh来执行dash.sh

其他脚本程序也都是类似这样的执行方法,要是以前拿到Shell脚本不知道怎么执行的小伙伴,现在知道了吧!

2、脚本注释很重要

通过上文我们已经知道跟在#后面的内容表示注释,注意:如果不是第一行,只要一个#就代表#后面的是注释了,第一行就是用来指定解释器的。

#后面的注释说明是用来给开发者和使用者看的,系统是看不到的,更加不会去执行。开发者通过注释可以知道其他程序员写的脚本什么意思,就算是自己开发的脚本,时间长了,也需要依靠注释来回忆。使用者通过查看注释知道使用的时候需要注意些什么,并不是所有的shell都是拿来就能用的,有的要根据自己的环境微调一下。当然了,注释很少会有中文,所以英语不好的小伙伴记得使用翻译工具。

3、脚本执行方式的不同导致结果不同

第一种就是上面说类似于bash test.sh和dash test.sh这种形式,这种执行方式不要求脚本文件具有可执行权限,即不需要通过chmod命令来改变文件权限。

第二种方式其实之前小编的一篇文章中已经提到过,就是用./test.sh或者path/test.sh这种形式,这种形式就要求脚本文件必须有可执行权限,如果文件没有可执行权限,强行运行,就会弹出permossion denied,命令被拒绝,一旦添加了可执行权限,执行就成功了,详细命令见下图。

49edbce45d4fa451d6833be6aea19d40.png图2

第三种方式是一个点好后面加空格,再跟上脚本名,这种形式的功能只在一个shell中执行脚本,而不会产生一个子shell来执行,主要用于shell中嵌套有子shell的情况。如果是有shell的嵌套的情况,不用第三种方式执行,可能就得不到你想要的结果了!如下图所示:

96fae5af9a647b679b68ddca7d60c72e.png图3

第一次执行echo $user和第二次执行的反馈结果就不一样。

好了,今天的分享就到这里了!小伙伴们有什么不懂的,可以给我留言!如果喜欢本文的话,就给小编点赞、收藏、分享吧!

举报/反馈

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值