🕌

コマンド最短実行に便利なyesコマンド

2020/10/01に公開

Unix/Linux環境にて、コマンド実行途中で止められないようにする方法。

対話式の質問に対して、「yes」等の回答をする場合は、以下のような方法で省略可能。

  1. # yes | "コマンド"
    • yesを省略
  2. # yes no | "コマンド"
    • noを省略
  3. # echo "1" | "コマンド"
    • 1を省略※一度きり省略

実行確認

yesコマンド

  • yesが入力されるまでループされるスクリプトを実行
# cat wait-yes.sh
#!/bin/bash
while true;do
        echo -n "Yesが入力されるまで対話ループが続きます。"
        read ANS

        case $ANS in
          [Yy] | [Yy][Ee][Ss] )
            echo "Yes"
            break
            ;;
          * )
            echo "Yes以外"
            ;;
        esac
done
# yes |. ./wait-yes.sh
Yesが入力されるまで対話ループが続きます。Yes
  • yesコマンドは「yes」以外も出力可能
# yes no
no
no
no
# yes xxx
xxx
xxx
xxx

echoコマンド

  • yesに対応する番号が入力されるまでループされるスクリプトを実行
# cat wait-yes-number.sh
echo "Yesの番号が入力されるまで対話ループが続きます。"
select ANS in yes no
do
    if [ "$ANS" = "yes" ]; then
        echo $ANS
        break
    fi
done
# echo "1" |. ./wait-yes-number.sh
Yesの番号が入力されるまで対話ループが続きます。
1) yes
2) no
#? yes
  • なお、selectの場合は、選択文を入力しても受け付けされない
# yes |. ./wait-yes-number.sh
Yesの番号が入力されるまで対話ループが続きます。
1) yes
2) no
#? #? #? #? #? #? #? #? #? #? #? #? #? #? #? #? #? ・・・【省略】

Discussion