bash - 対話的な処理

メッセージの出力

echoコマンドやヒアドキュメントを使う。

問い合わせメッセージの出力と応えの取得

応答入力待ちの状態のときは、カーソルがメッセージの後ろにくる

#!/usr/bin/sh
echo -n "[y/n]?  "  ##-nオプションを使うと改行しない
read val1
case "$val1" in
    y | yes ) frag=true  ;;
    *       ) frag=false ;;
esac

1文字だけ取り出す

sedやexprコマンドを使う

#!/usr/bin/sh
echo -n "[yes/no]? "
read val1
val1=`expr "$val1" : "\(.\).*"`
echo "$val1"

ある条件下でのメッセージ出力

フラグの値によってメッセージを出す出さないかをifで文処理する。
何かメッセージを出すたびif文を書かなければならず面倒なので、変数にechoを入れる。

#!/usr/bin/sh
if [ "$var" = "true" ];then
    ECHO=echo
else
    ECHO=:
fi
#...
$ECHO "message"