null 文字を区切り文字として使用してパラメータとして渡される文字列の連結

null 文字を区切り文字として使用してパラメータとして渡される文字列の連結

$a"\0"$b"\0"$c"\0"$d私は$ a、$ b、$ c、$ dなどの引数を受け入れ、それを標準出力に書き込むCLIツールを探しています。 CLIでパイプラインの先頭に使用できる標準ツールはありますか?私の実装では、カスタムecho区切り文字を受け入れないようです。

ベストアンサー1

printfこの問題は、ほとんど次のように解決できます。

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

printf必要に応じて対応する書式文字列を繰り返します(この場合は各パラメータに対して1回)。これにより、各パラメータの後にヌルバイトが続きます。

最後のヌルバイトを削除するには、GNUを使用してくださいhead

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

Zshの組み込み機能printも後処理なしでこれを行うことができます。

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

-rエスケープ処理を無効にし、-N引数をnullバイトで区切って終了し、-n端末の改行を無効にします。ありがとうございます。スチールドライバーヒントをください! )

おすすめ記事