比方说,我有一个bash脚本,其中包含一些参数。例如,
some_script.sh --flag1 --flag2 --flag3
现在让我们说我只想传递flag1
和flag2
。但是,我有一个字符串"--flag1 --flag2"
。我想做的是这样:
some_script.sh --flag1 --flag2
但是我在将该字符串转换为输入时遇到了麻烦。如果我这样做,
some_script.sh "--flag1 --flag2"
我的bash脚本无法正确解析标志,因为它认为我传入了无效的参数(从技术上讲,因为该参数是一个长字符串)。
我尝试使用列表,如下所示:
some_script.sh ["--flag1", "--flag2"]
然后遍历我的bash脚本中的列表,但是没有运气。这是我的示例bash脚本:
while (( $# > 0 ))
do
opt="$1"
shift
case $opt in
--flag1)
var1=true
;;
--flag2)
var2=true
;;
--flag3)
var3=true
;;
--*)
echo "One or more arguments is not valid"
exit 1
;;
*)
break
;;
esac
done
在这个while
循环中,我如何遍历一串参数?基本上,我将如何遍历"--flag1 --flag2"
字符串或至少遍历数组["--flag1", "--flag2"]
?似乎我需要更改以下行:
while (( $# > 0 ))
但是我尝试使用$[@]
代替$#
作为数组输入,但是我没有得到正确解析的字符串。我也尝试过使用for
循环遍历列表,以这种方式遍历项目,但是没有运气。我可以使用set
或IFS
分割字符串,但是对于命令行工具来说似乎有点复杂。当然,在while
循环中有一种更简单的拆分和迭代方法吗?