正確に次の内容でファイルを生成することから始めてください。
a\nb
このファイルに名前を付けてfoo
次のコマンドを実行すると、ファイルの正確な内容が印刷されます。
bash -c 'bar=$(cat foo);echo "$bar"'
sh
しかし、代わりに実行すると、bash
結果は次のようになります。
a
b
ここでの問題は、\n
私が望んでいない改行文字に変換されることです。
マイコンピュータはデフォルトで組み込みLinuxが組み込まれているターゲットコンピュータsh
に設定されているため、非常に単純で、notと非常によく似ています。dash
ash
busybox
dash
bash
これを実行するとsh -c 'cat foo'
期待した結果が得られますが、変数の中に入れたいです。どうすればいいですか?
答え1
実際、シェルはコマンドを分岐して実行します。ただし、(組み込みコマンドではなく)コマンドが実行されるたびにシェルが分岐します。これはシェルが機能する方法なので、避けられません。
注:シェルは何も翻訳しません。このecho
コマンドは機能します。ただし、以下を使用できますprintf
。
your_shell -c 'bar=$(cat foo); printf %s "$bar"'