我编写了一个bash脚本,它按名称获取参数,并在键值对中读取其值。下面是我如何运行脚本的示例。
sh test.sh param1='a' param2='b'
然后我在脚本中引用像$param1和$param2这样的输入参数。下面是我写的剧本。
for item in $@; do
case $item in
(*=*) eval $item;;
esac
done
但当参数值中有空格时,它只取空格前的部分。
param3='select * from'
只将'select'分配给param3,而不是整个字符串。我怎样才能做到这一点?任何帮助都将不胜感激。
编辑:
伊尼安回答后
for item in $@; do
case "$item" in
(*=*) eval "$item";;
esac
done
最佳答案
您可以通过引用"$@"
并使用declare
而不是eval
来完成此操作:
for item in "$@"; do
case $item in
(*=*) declare "$item" ;;
esac
done
但是,这现在是bash脚本,因此必须使用
bash test.sh
而不是sh test.sh
来运行它。关于linux - 解析bash脚本的输入参数时带空格的参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41560611/