我编写了一个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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句