在bash命令行工具中将字符串或数组转换为单独的输入

时间:2018-08-26 20:38:32

标签: bash

比方说,我有一个bash脚本,其中包含一些参数。例如,

some_script.sh --flag1 --flag2 --flag3

现在让我们说我只想传递flag1flag2。但是,我有一个字符串"--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循环遍历列表,以这种方式遍历项目,但是没有运气。我可以使用setIFS分割字符串,但是对于命令行工具来说似乎有点复杂。当然,在while循环中有一种更简单的拆分和迭代方法吗?

0 个答案:

没有答案