次のbashスクリプトを考えてみましょう。
~$ x="echo -n abc "
~$ $x && echo xyz
abcxyz
~$
好奇心のため(必要に応じて)、echo -n
何かを出力するコマンドを含むbash変数が必要です。末尾のスペースを保持する方法で定義できるかどうか疑問に思います。
明確な選択は引用符を使用することです。
~$ x="echo -n \"abc \""
~$ $x && echo xyz
"abc "xyz
~$
しかし、これらの引用は出力を汚染します。
もちろん、2番目のechoコマンドの前にスペースを追加することもできます。
~$ x="echo -n abc "
~$ $x && echo " xyz"
abc xyz
~$
ただし、質問の目的は、x
末尾のスペースが出力に追加の引用符がないことを意味する方法で変更できることを確認することです。$x
echo -n
とても感謝しています。
答え1
これは辛いコマンドを変数に入れようとしましたが、複雑な場合は常に失敗します!
解決策は配列を使用することです。
$ x=(echo -n "abc ")
$ "${x[@]}" && echo xyz
abc xyz