我写了一个bash脚本,它通过名称接受参数并在键值对中读取其值。以下是我如何运行脚本的示例。为bash脚本解析输入参数时带空格的参数
sh test.sh param1='a' param2='b'
然后我在脚本内引用输入参数,如$ param1和$ param2。以下是我为此撰写的脚本。
for item in [email protected]; do
case $item in
(*=*) eval $item;;
esac
done
但是,当参数的值有空格时,它只占用空格之前的部分。
param3='select * from'
只会将“select”分配给param3而不是整个字符串。我怎样才能做到这一点?任何帮助将非常感激。
编辑:
Inian的回答后
for item in [email protected]; do
case "$item" in
(*=*) eval "$item";;
esac
done
你有没有考虑过将它们作为变量传递给它,而不是'param1 ='a'param2 ='b'sh test.sh'?这将使'echo'$ param1“'立即可用而不解析 –
使用$ @或$ *而不用双引号括起来不是一个好主意。如果你的字符串中有特殊字符,比如空白字符和通配符,它会变得不合时宜。 – codeforester