![入力に文字が含まれているかどうかをテストする関数をどのように作成できますか? [コピー]](https://linux33.com/image/60434/%E5%85%A5%E5%8A%9B%E3%81%AB%E6%96%87%E5%AD%97%E3%81%8C%E5%90%AB%E3%81%BE%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%81%8B%E3%81%A9%E3%81%86%E3%81%8B%E3%82%92%E3%83%86%E3%82%B9%E3%83%88%E3%81%99%E3%82%8B%E9%96%A2%E6%95%B0%E3%82%92%E3%81%A9%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E4%BD%9C%E6%88%90%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
これには、ユーザーがEnterキーを押した後にデータを入力するかどうかをテストする一連の例があります。
echo -n "Type a digit or a letter > "
read character
blank=""
if [ "$character" != "$blank"]; then
echo "You typed something"
else
echo "Enter something"
fi
上記のコードは変数に何も含まれているかどうかをテストすることになっていますが、うまく動作しないようです。助けが必要ですか?ありがとう。
答え1
[ "$character" ]
単に文字列がゼロでないことをテストするために使用できます。これはより長い形式と同じです[ -n "$character" ]
。または、[ -z $character ]
文字列がゼロかどうかをテストします。
ただし、対話型スクリプトで実際に必要なのは、ユーザーがオーバーライドできる変数にいくつかのデフォルト値を設定することです。これが意図されている場合は、テストを避け、パラメータ拡張を使用できます。
read character
echo "character is set to ${character:-default}"