簡體   English   中英

Bash-將字符串拆分為數組,保留空格

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM