依旧摘自阮大佬的Bash教程,这里仅做个人学习记录。
脚本参数
script.sh word1 word2 word3
上面例子中,script.sh是一个脚本文件,word1、word2和word3是三个参数。
脚本文件内部,可以使用特殊变量,引用这些参数:
$0
:脚本文件名,即script.sh
$#
:参数的数量$1~$9
:对应脚本的第一个参数到第九个参数$@
:全部的参数,参数之间使用空格分隔$*
:全部的参数,参数之间使用变量$IFS值的第一个字符分隔,默认为空格,但是可以自定义。
如果脚本的参数多于9个,那么第10个参数可以用${10}
的形式引用,以此类推。
下面是一个脚本内部读取命令行参数的例子:
#!/bin/bash
# script.sh
echo "全部参数:" $@
echo "命令行参数数量:" $#
echo '$0 = ' $0
echo '$1 = ' $1
echo '$2 = ' $2
echo '$3 = ' $3
执行结果如下:
$ ./script.sh a b c
全部参数:a b c
命令行参数数量:3
$0 = script.sh
$1 = a
$2 = b
$3 = c
注释
Bash 脚本中,#
表示注释,可以放在行首,也可以放在行尾。
建议在脚本开头,使用注释说明当前脚本的作用,这样有利于日后的维护。
命令执行结果
命令执行结束后,会有一个返回值。
0
表示执行成功,非0
(通常是1
)表示执行失败。
环境变量$?
可以读取前一个命令的返回值。
利用这一点,可以在脚本中对命令执行结果进行判断:
cd $some_directory
if [ "$?" = "0" ]; then
rm *
else
echo "无法切换目录!" 1>&2
exit 1
fi
注:fi
为if语句的结束,相当于end
source 命令
加载配置文件
source命令
用于执行一个脚本,通常用于重新加载一个配置文件:source .bashrc
。
source命令最大的特点是在当前 Shell 执行脚本,不像直接执行脚本时,会新建一个子 Shell。所以,source命令执行脚本时,不需要export变量。
加载外部库
source命令
的另一个用途,是在脚本内部加载外部库
#!/bin/bash
source ./lib.sh
function_from_lib
source
有一个简写形式,可以使用一个点.
来表示:
注意:这两个点之间是有空格的!
执行权限和路径
(待续~)