我们有一个简单的脚本,我们使用以下命令执行脚本:
script.sh 123 456
脚本内容
FirstNum=$1
SecondNum=$2
我们可以在执行时传递命令行,而不是在脚本中使用 $1 和 $2 吗?
script.sh FirstNum=123 SecondNum=456 (so that i dont want to call $1 , $2 inside the script)
有没有办法不使用 $1 和 $2 并直接通过命令行传递值?
答案1
对于bash
shell,您将需要使用getopts
它来解析命令行参数。
从https://sookocheff.com/post/bash/parsing-bash-script-arguments-with-shopts/
shell 脚本编写中的一项常见任务是解析脚本的命令行参数。 Bash 提供了 getopts 内置函数来做到这一点。本教程介绍如何使用 getopts 内置函数来解析 bash 脚本的参数和选项。
例子:
while getopts ":f:l:" opt; do
case ${opt} in
f )
firstnum=$OPTARG
l )
lastnum=$OPTARG
;;
\? )
echo "Invalid option: $OPTARG" 1>&2
;;
: )
echo "Invalid option: $OPTARG requires an argument" 1>&2
;;
esac
done
shift $((OPTIND -1))
我建议使用简单的 char 参数:
script.sh -f 123 -l 456
哪里-f
是第一个,哪里-l
是最后一个。