Bash-Expansion
如何使用括號進行擴展,但在輸出中使用逗號而不是空格作為分隔符?
我需要這樣做
IFS=",";echo {1..5}
才能輸出1,2,3,4,5
而不是1 2 3 4 5
. 如何製作 bash echo {1..5} 並用逗號輸出值?
使用 Bash 的內置函式:
這有點難看,因為我們需要分隔
5
以避免尾隨逗號:$ printf '%s,' {1..4}; echo 5 1,2,3,4,5
雖然因為
printf
可以直接輸出到變數,但可以解決這個問題,並通過參數擴展刪除最後的逗號:$ printf -v tmpvar "%s," {1..5}; echo "${tmpvar%,}" 1,2,3,4,5
或 with
"$*"
,它使用 的第一個字元連接IFS
。這會破壞全域狀態,但您可以通過在子shell或函式中執行它來輕鬆避免這種情況local IFS
:$ IFS=,; set -- {1..5}; echo "$*"; 1,2,3,4,5
如果限制在變數中,那麼使用循環手動執行它可能是最簡單的,因為您不能將變數用作大括號擴展範圍中的端點。同樣,上限是在特殊情況下:
a=1; b=5 for (( i=a ; i<b ; i++ )); do printf "$i,"; done; printf "$b\n"