Gil*_*il' 46
典型的shell脚本首先解析在命令行上传递的选项和参数.参数的数量存储在#参数中,即您可以使用它$#.例如,如果您的脚本只需要三个参数,则可以执行以下操作:
if [ $# -lt 3 ]; then
echo 1>&2 "$0: not enough arguments"
exit 2
elif [ $# -gt 3 ]; then
echo 1>&2 "$0: too many arguments"
exit 2
fi
# The three arguments are available as "$1", "$2", "$3"
Run Code Online (Sandbox Code Playgroud)
内置命令exit终止脚本执行.整数参数是脚本的返回值:0表示成功,小正整数表示失败(常见约定1表示"未找到"(想想grep),2表示"意外错误"(无法识别的选项,无效的输入文件名,...)).
如果您的脚本采用选项(如-x),请使用getopts.
use*_*488 17
示例脚本(myscript.sh):
#!/bin/bash
file1=${1?param missing - from file.}
file2=${2?param missing - to file.}
[...]
Run Code Online (Sandbox Code Playgroud)
例:
$ ./myscript.sh file1
./myscript.sh: line 4: 2: param missing - to file.
Run Code Online (Sandbox Code Playgroud)
该nounset选项将使bash将未设置的变量和参数视为错误。
脚本示例(myscript.sh):
#!/bin/bash
set -o nounset
echo First argument: $1
echo OK
Run Code Online (Sandbox Code Playgroud)
例:
$ ./myscript.sh; echo $?
./myscript.sh: line 4: $1: unbound variable
1
$ ./myscript.sh foo; echo $?
First argument: foo
OK
0
Run Code Online (Sandbox Code Playgroud)