0

私には機能があります

foo_bar()
{
  echo "foo_bar"
  read -p "enter option" option
  echo $option
}


option=$(foo_bar)
echo $option

戻る

enter option
and then in one line
foo_bar [option]

私が期待しているのは、実行が私が書いた順序に従うことです..つまり、

foo_bar
enter option

[option]

シェルスクリプトでこれを行うにはどうすればよいですか

4

2 に答える 2

1

前にエコーを追加します。

option=$(foo_bar)

したがって、次のようになります。

foo_bar()
{
  echo "foo_bar"
  read -p "enter option" option
  echo $option
}

echo
option=$(foo_bar)
echo $option
于 2013-01-31T19:25:28.533 に答える
1

foo_bar変数の出力をキャプチャしていますoption。その出力には、foo_bar がエコーするテキストが含まれます。(つまり、文字列foo_bar\n$optionを変数optionに割り当て、echo は改行をスペースに置き換えます) ただし、read -pプロンプトは stderr に出力されます。read がプロンプトを出力するのと同じ場所に "foo_bar" を出力したい場合は、明示的に実行してください:

foo_bar()
{
  echo "foo_bar" >&2
  read -p "enter option" option
  echo $option
}


option=$(foo_bar)
echo $option
于 2013-01-31T19:28:17.667 に答える