String

連接作為參數傳遞的字元串,以空字元作為分隔符

  • July 5, 2019

我正在尋找一個帶有任意數量參數的 CLI 工具 $ a, $ 乙, $ c, $ d 等,並寫入$a"\0"$b"\0"$c"\0"$d標準輸出。是否有一個標準工具可以做到這一點,我可以在 CLI 管道的開頭使用它?我的實現echo似乎不允許自定義分隔符。

printf幾乎可以解決這個問題:

printf "%s\0" "$a" "$b" "$c" ...

printf盡可能多地重複其格式字元串,在這種情況下,每個參數一次,因此您最終會得到每個參數後跟一個空字節。

要擺脫最後一個空字節,請使用 GNU head

printf "%s\0" "$a" "$b" "$c" ... | head -c-1

Zsh 的內置print也可以做到這一點,無需後處理:

print -rNn "$a" "$b" "$c" ...

-r禁用轉義處理,-N列印由空字節分隔和終止的參數,-n禁用終端換行符。感謝steeldriver的提示!)

引用自:https://unix.stackexchange.com/questions/528535