[英]Bash - Split string into array, preserving spaces
我正在嘗試使用除空格以外的分隔符將字符串拆分為數組,以保留空格。
例如,如果我運行:
files=$(echo "foo.txt:bar.txt:my story.txt" | tr ":" "\n")
for f in $files; do
echo $f
done
我得到:
foo.txt
bar.txt
my
story.txt
如何保存空間?
files=$(cmd)
不是數組分配。 這是一個字符串分配( cmd
的輸出分配給常規變量files
)。
我建議使用read -a
拆分字符串,因為glob不會成為問題:
IFS=: read -ra files <<< "foo.txt:bar.txt:my story.txt"
for f in "${files[@]}"; do
echo "$f"
done
使用IFS
指定字段分隔符:
IFS=: files=($(echo "foo.txt:bar.txt:my story.txt"))
for f in "${files[@]}"; do
echo "$f"
done
您還需要在值周圍加上括號以組成一個數組。 您只需將$files
設置$files
一個字符串,其中:
替換為換行符。 然后,擴展$files
,單詞拆分會使用任何形式的空格,因此空格和換行符是字段分隔符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.