【发布时间】:2018-06-22 11:29:54
【问题描述】:
我有两个字符串列表(每个字符串中都有空格),并且想要一个一个地读取它们。字符串的长度相同,所以我通过"${!argument[@]}" 获取其中一个的长度,并尝试读取列表的元素。但它失败了:
arguments="--a 100 --b 200" "--a 100 --b 200 --c"
settings="without_c" "with_c"
for index in "${!argument[@]}"
do
setting=${setting[$index]}
argument=${argument[$index]}
done
给出以下错误:
alp@ubuntu:~$ sh toy.sh
toy.sh: 1: toy.sh: --a 100 --b 200 --c: not found
toy.sh: 2: toy.sh: with_c: not found
toy.sh: 3: toy.sh: Bad substitution
【问题讨论】:
-
不。那是在 bash 中。
-
您不想使用 bash 吗?如果没有普通 sh 中的数组,要做到这一点非常困难。
-
恕我直言,这无关紧要。这是一个标题和标签中带有 shell 的问题。我没有看到将其标记为重复的理由。
-
在您的问题中应该提到限制对普通 sh 的回答,并且解释为什么您有这样的限制也是一个好主意。如今,Bash 是事实上的标准 shell。许多人说“shell”的意思是“bash”,所以值得明确的是你不这样做。我不是要争论,只是想帮助你得到好的答案。
-
请参阅Arrays in UNIX shell? 了解 bash 解决方案。
标签: sh