我试图调用一个shell脚本以及类似这样的参数:
sh test.sh -arg1="ab" -arg2="cd" -arg3="ef=gh"
脚本代码如下:
while [ $# -gt 0 ]
do
key=${1%=*}
case $key in
"-arg1") arg1=${1#$key=} ;;
"-arg2") arg2=${1#$key=} ;;
"-arg3") arg3=${1#$key=} ;;
esac
shift;
done
echo "arg1 is $arg1 arg2 is $arg2 and arg3 is $arg3"
显示正确的arg1和arg2,但arg3显示为空。我认为这是因为'=' 在arg3里面签名。关于如何覆盖它的任何帮助。
由于
答案 0 :(得分:1)
尝试替换代码行:
key=${1%=*}
这一个:
key=${1%%=*}
答案 1 :(得分:0)
您可以使用以下命令直接访问命令行参数:
$0 -- Name of File
$1 -- 1st Argument
$2 -- 2nd Argument
$3 -- 3rd Argument
.
.
.
<强> test.sh 强>
echo "arg1 is $1 arg2 is $2 and arg3 is $3"
要运行的命令
sh test.sh "ab" "cd" "ef=gh"
<强>输出强>
arg1 is ab arg2 is cd and arg3 is ef=gh
答案 2 :(得分:0)
-arg3="ef=gh"
您需要转义=字符
-arg3="ef\=gh"