gpt4 book ai didi

Bash:将带引号的字符串拆分为数组

转载 作者:行者123 更新时间:2023-11-29 09:15:27 27 4
gpt4 key购买 nike

<分区>

data.in:

a b c 'd e'

script.sh:

while read -a arr; do
echo "${#arr[@]}"
for i in "${arr[@]}"; do
echo "$i"
done
done

命令:

cat data.in | bash script.sh

输出:

5
a
b
c
'd
e'

问题:

如何将 'd e' 作为数组中的单个元素获取?


更新。这是迄今为止我所做的最好的:

while read line; do
arr=()
while read word; do
arr+=("$word")
done < <(echo "$line" | xargs -n 1)
echo "${#arr[@]}"
for i in "${arr[@]}"; do
echo "$i"
done
done

输出:

4
a
b
c
d e

但是,下面的data.in:

"a\"b" c

将使它失败(以及我迄今为止发现的任何其他脚本,即使在 dup question 中):

xargs: unmatched double quote; by default quotes are special to xargs unless you use the -0 option

但是这个输入是合法的,因为你可以在命令行中输入:

echo "a\"b" c

而且运行良好。所以这是行为不匹配而不是非法输入。

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