bash
または、zsh
次の構文を使用してパイプから変数を読み取ることができます。
echo AAA BBB | read X Y ; echo $X
これは印刷されますAAA
で同じアプローチが機能しないのはなぜですか/bin/sh
?
使っています/bin/sh
- >/bin/dash
スプリントDebian で
ベストアンサー1
なぜ同じ方法が '/bin/sh'で動作しないのですか?
パイプライン内の各コマンドはサブシェルで実行されるため、パイプラインから変数を割り当てると期待どおりにsh
機能しません。bash
実際、コマンドは実際に働くが宣言されX
ましたがY
、パイプラインの外では使用できません。
以下が機能します。
echo AAA BBB | { read X Y ; echo $X; }
しかし、あなたの場合は:
この試み、
read X Y <<< "AAA BBB"
または
read X Y < <(echo "AAA BBB")
便利なリンク: