gpt4 book ai didi

bash - 循环包含空格的字符串集

转载 作者:行者123 更新时间:2023-11-29 08:43:34 25 4
gpt4 key购买 nike

我有多个字符串,如“a b”、“c d”、“foo bar”等。我想遍历这组字符串并对每个字符串执行一个操作。在此操作中,我调用了多个其他脚本,因此我不想更改此循环的 IFS,因为它可能会中断我对其他脚本的调用。这就是为什么我尝试转义这些字符串中包含的空格但没有成功的原因。

所以例如我希望得到

a b
c d

我尝试了以下方法:

#!/bin/sh

x="a b"
y="c d"

echo "Attempt 1"
all="$x $y"

for i in $all ; do
echo $i
done

echo "Attempt 2"
all="a\ b c\ d"
for i in $all ; do
echo $i
done

echo "Attempt 3"
all=($x $y)
for i in ${all[@]} ; do
echo $i
done

echo "Attempt 4"
all='"'$x'" "'$y'"'
for i in $all ; do
echo $i
done

echo "Attempt 5"
for i in "$x" "$y" ; do
echo $i
done

echo "Attempt 6"
all2=("a b" "c d");
for i in ${all2[@]}; do
echo $i
done

echo "Attempt 7"
all3="a b c d"
echo $all3|
while read i; do
echo $i
done

只有 5 次尝试成功,但我想不必为每个字符串声明一个变量,(维护起来会很痛苦)。我刚刚引入了 x 和 y 用于测试,但我的想法是在一个变量中声明集合“a b”和“c d”。

最佳答案

all=("$x""$y")"${all[@]}" 中,您需要将变量括在双引号内>:

x="a b"
y="c d"

echo "Attempt XX"
all=("$x" "$y")
for i in "${all[@]}" ; do
echo "$i"
done

产生:

Attempt XX
a b
c d

您还可以定义字符串:

all=("a b" "c d")
for i in "${all[@]}" ; do
echo "$i"
done

关于bash - 循环包含空格的字符串集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18383291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com