linux编写脚本时要注意,Linux编写shell脚本的注意事项

命令的运行是从上而下、从左而右的分析与运行;

命令的下达就如同第五章内提到的: 命令、选项与参数间的多个空白都会被忽略掉;

空白行也将被忽略掉,并且 [tab] 按键所推开的空白同样视为空白键;

如果读取到一个 Enter 符号 (CR) ,就尝试开始运行该行 (或该串) 命令;

至於如果一行的内容太多,则可以使用『 \[Enter] 』来延伸至下一行;

『 # 』可做为注解!任何加在 # 后面的数据将全部被视为注解文字而被忽略!

如此一来,我们在 script 内所撰写的程序,就会被一行一行的运行。现在我们假设你写的这个程序档名是 /home/dmtsai/shell.sh 好了,那如何运行这个文件?很简单,可以有底下几个方法:

直接命令下达: shell.sh 文件必须要具备可读与可运行 (rx) 的权限,然后:

绝对路径:使用 /home/dmtsai/shell.sh 来下达命令;

相对路径:假设工作目录在 /home/dmtsai/ ,则使用 ./shell.sh 来运行

变量『PATH』功能:将 shell.sh 放在 PATH 指定的目录内,例如: ~/bin/

以 bash 程序来运行:透过『 bash shell.sh 』或『 sh shell.sh 』来运行

反正重点就是要让那个 shell.sh 内的命令可以被运行的意思啦! 咦!那我为何需要使用 『./shell.sh 』来下达命令?忘记了吗?回去第十一章内的命令搜寻顺序察看一下, 你就会知道原因了!同时,由於 CentOS 默认使用者家目录下的 ~/bin 目录会被配置到 $PATH 内,所以你也可以将 shell.sh 创建在 /home/dmtsai/bin/ 底下 ( ~/bin 目录需要自行配置) 。此时,若shell.sh 在 ~/bin 内且具有 rx 的权限,那就直接输入 shell.sh 即可运行该脚本程序!

那为何『 sh shell.sh 』也可以运行呢?这是因为 /bin/sh 其实就是 /bin/bash (连结档),使用 sh shell.sh 亦即告诉系统,我想要直接以 bash 的功能来运行 shell.sh 这个文件内的相关命令的意思,所以此时你的 shell.sh 只要有 r 的权限即可被运行喔!而我们也可以利用 sh 的参数,如 -n 及 -x 来检查与追踪 shell.sh 的语法是否正确呢! ^_^

路径与命令搜寻顺序

我们在第六章与第七章都曾谈过『相对路径与绝对路径』的关系, 在本章的前几小节也谈到了 alias 与 bash 的内建命令。现在我们知道系统里面其实有不少的 ls 命令, 或者是包括内建的 echo 命令,那么来想一想,如果一个命令 (例如 ls) 被下达时, 到底是哪一个 ls 被拿来运行?很有趣吧!基本上,命令运行的顺序可以这样看:

以相对/绝对路径运行命令,例如『 /bin/ls 』或『 ./ls 』;

由 alias 找到该命令来运行;

由 bash 内建的 (builtin) 命令来运行;

透过 $PATH 这个变量的顺序搜寻到的第一个命令来运行。

举例来说,你可以下达 /bin/ls 及单纯的 ls 看看,会发现使用 ls 有颜色但是 /bin/ls 则没有颜色。 因为 /bin/ls 是直接取用该命令来下达,而 ls 会因为『 alias ls=‘ls --color=tty‘ 』这个命令别名而先使用! 如果想要了解命令搜寻的顺序,其实透过 type -a ls 也可以查询的到啦!上述的顺序最好先了解喔!

例题:

配置 echo 的命令别名成为 echo -n ,然后再观察 echo 运行的顺序

答:

[[email protected] ~]# alias echo=‘echo -n‘

[[email protected] ~]# type -a echo

echo is aliased to `echo -n‘

echo is a shell builtin

echo is /bin/echo

瞧!很清楚吧!先 alias 再 builtin 再由 $PATH 找到 /bin/echo 啰!

原文:http://www.cnblogs.com/aguai1992/p/4661637.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值