ファイルが存在するかどうかを確認し、存在しない場合はユーザーにファイルを生成するかどうかを尋ねたいと思います。ユーザーがYを入力してもNを入力しても、「Whatever you say」だけが画面に表示されます。
#!/bin/bash
#This is testing if a file (myFile) exists
if [ -f ~/myFile ]
then
echo "The file exists!"
else
echo "The file does not exist. Would you like to create it? (Y/N)"
read ANSWER
fi
if [ "$ANSWER"="N" ]
then
echo "Whatever you say!"
else
touch myFile
echo "The file has been created!"
fi
答え1
=
比較演算子を使用する場合はスペースを使用してください。[ ]
シェル組み込み関数です。したがって、各パラメータをスペースと一緒に渡す必要があります。だからあなたはこれをしなければなりません:
if [ "$ANSWER" = "N" ]
答え2
=
演算子の周りにスペースが必要です。
if [ "$ANSWER" = "N" ]
テキストマッチングが必要なときにcase
over test
or を使用する方が柔軟性が[ ... ]
高く効率的であるため、これをお勧めします。
FILE=~/myFile
if [ -f "$FILE" ]
then
echo "The file exists!"
else
echo -n "The file does not exist. Would you like to create it? (Y/N) "
read ANSWER
shopt -s nocasematch
case "$ANSWER" in
n|no)
echo "Whatever you say!"
;;
*)
touch "$FILE"
echo "The file has been created!"
;;
esac
shopt -u nocasematch
fi