在Shell脚本中绕过是/否

时间:2014-08-04 07:17:04

标签: bash shell ubuntu

当我在服务器上运行两次时,有一个shell脚本它会多次询问yes/no几次100次。我厌倦了每次都输入yes。有没有办法运行该脚本只是将yes作为默认选项。以下是我的脚本!仅供参考,我无法编辑我的剧本。 我可以使用./ittp-update.sh

运行它
  #!/bin/bash
  echo "Do you need to install the necessary compiling tools?"
  select yn in "Yes" "No"; do
case $yn in
    Yes ) sudo apt-get install tools; break;;
    No ) <Here I want to skip to the next step. I originally left it 
          blank and removed the "done" command (after esac command) 
          to do this, but if I choose yes, it skips to the end 
          (where the next "done" command is and ends the script>
esac

echo "Do you need to eidt your configuration?"
select ny in "No" "Yes"; do
   case $ny in
    No ) <what do I put here to skip to the next tag 
         (labeled compile for example purposes); break;;
    Yes ) 
esac
 echo "You have 3 options with how you can edit you config file."

...

1 个答案:

答案 0 :(得分:6)

如果你只需要回答&#34;是&#34;对于一切,你可以使用

yes Yes | ./ittp-update.sh

这是如何运作的:

  1. 程序yes打印您提供的字符串(或者#34; y&#34;如果您不给它任何东西,因为这是在*中给出肯定答案的默认方式nix程序)在标准输出上重复,直到收到SIGPIPE
  2. 管道(|)将前面命令(yes)的标准输出连接到以下命令(./ittp-update.sh)的标准输入。
  3. ./ittp-update.sh完成时,shell会自动将SIGPIPE发送到通过管道连接到它的任何命令(在这种情况下只有yes)。
  4. 收到SIGPIPE后,yes退出。
  5. 有关详细信息,请参阅man yes