我尝试在变量中构建一组参数并将其传递给脚本,但行为与我的预期不同。
测试.sh
#!/bin/bash
for var in "$@"; do
echo "$var"
done
输入
usr@host$ ARGS="-a \"arg one\" -b \"arg two\""
usr@host$ ./test.sh $ARGS
输出
-a
"arg
one"
-b
"arg
two"
预期的
-a
arg one
-b
arg two
请注意,如果您将引用的参数直接传递给它可以工作的脚本。我也可以用 eval 解决这个问题,但我想了解第一种方法失败的原因。
解决方法
ARGS="./test.sh -a "arg one" -b "arg two""
eval $ARGS