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]

我如何在 shell 脚本中执行此操作

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。如果您希望 "foo_bar" 打印到 read 打印其提示的同一位置,请明确执行:

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


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