次のコマンドに関して:
$ unset a
$ echo 12 | read a
$ echo $a
$
2番目のステートメントでは、aの値が12に設定されることを期待しています。しかし、aはまだ設定されていないことがわかりました。
ベストアンサー1
Bashでプロセス置換を使用できます。
read -r a < <(echo 12)
echo "$a"
またはhere string
bashでも可能です。
read -r a <<< 12
echo "$a"
ほとんどのシェルでは、パイプラインの各コマンドは別々のSubShellで実行されます。バラよりパイプを介してデータを読み取れないのはなぜですか?
使用しているシェルがプロセスの置き換えをサポートしていない場合は、一時ファイルを使用する必要があります。here string
echo 12 > tempfile
read -r a < tempfile
echo "$a"
一時ファイルは実際のスクリプトの例にすぎませんが、一時ファイルは安全な方法でfifo
使用されます。mktemp