Col*_*old 6 shell options shell-script arguments
我正在创建一个 shell 脚本,我需要它接受两个强制参数和一个可选参数。我如何检查?在我见过的大多数脚本中,可选参数在强制参数之前传递,例如:
cut -c2 test.txt
Run Code Online (Sandbox Code Playgroud)
但对我来说,在脚本中检查这种模式会很复杂,所以我的想法是将第三个参数视为可选参数。
如果您对最后的可选参数感到满意,您可以这样做:
foo=$1
bar=$2
baz=${3:-default value}
Run Code Online (Sandbox Code Playgroud)
这会将前两个参数存储在$foo
and 中$bar
。如果提供了第三个参数,它将存储在$baz
; 否则将默认为default value
. 您还可以检查第三个变量是否为空:
if [ -z "$3" ]; then
# Code for the case that the user didn't pass a third argument
fi
Run Code Online (Sandbox Code Playgroud)
如果您想要开始时的默认值,最简单的方法可能是检查传递给脚本的参数数量,该数量存储在$#
. 例如:
case $# in
2)
# Put commands here for when the user passes two arguments
# Could just be setting variables like above, or anything else you need
;;
3)
# Put commands here for when the user passes three arguments
;;
*)
echo "Wrong number of arguments passed"
exit 1;;
esac
Run Code Online (Sandbox Code Playgroud)
$#
如果您需要错误检查,无论哪种情况,打开都可以正常工作。如果您的脚本使用像cut
示例一样的 getopt 样式参数,则可以使用它;有关更多信息,请参阅此堆栈溢出问题
归档时间: |
|
查看次数: |
18939 次 |
最近记录: |