実現したいこと
<実行結果>
現状→./ensyu11_3_2: line 19: echo入力値が無効です: command not found
正→echo入力値が無効です
要件を満たした上で、現状から正になるようにスクリプト内容を変更したいです。
要件
ディレクトリを作成する際、「処理を実行してもよろしいですか?」と質問し、
「yes」または「y」と入力した場合のみディレクトリを作成するスクリプトに改善しなさい。
なお「no」または「n」と入力した場合は、「処理をキャンセルしました」と表示させ、それ以外の場合は、「入力値が無効です」と表示すること。
前提
上記の要件を満たすシェルスクリプトを作成しております。
スクリプト作成後に実行したところ、
要件は満たしてはいるがエラーも同時に表示されている状態が発生しました。
発生している問題・エラーメッセージ
if文の条件分岐を用いて3パターンの実行結果になるよう作成を行いました。
①yes or yを入力→ディレクトリを作成
②no or nを入力→"処理をキャンセルしました。"表示
③それ以外を入力→"入力値が無効です。"
前提での説明と被ってしまうのですが、改善したい事としては
実行結果自体は要件を満たしていますが、同時に"command not found"エラー文があるためエラー解消したいです。
実行結果(エラー)
<パターン①>
[ infrauser@infrastd1s:~/infradir99 ] ./ensyu11_3_2
ディレクトリ名を入力してください。
test
処理を実行してもよろしいですか?
yes
./ensyu11_3_2: line 15: echoディレクトリを作成しました。: command not found
<パターン②>
[ infrauser@infrastd1s:~/infradir99 ] ./ensyu11_3_2
ディレクトリ名を入力してください。
test
処理を実行してもよろしいですか?
no
./ensyu11_3_2: line 17: 処理をキャンセルしました。: command not found
<パターン③>
[ infrauser@infrastd1s:~/infradir99 ] ./ensyu11_3_2
ディレクトリ名を入力してください。
test
処理を実行してもよろしいですか?
aaa
./ensyu11_3_2: line 19: echo入力値が無効です: command not found
該当のソースコード(スクリプト)
#!/bin/sh
STR1=yes
STR2=yes
STR3=no
STR4=n
echo "ディレクトリ名を入力してください。"
read ndir;
echo "処理を実行してもよろしいですか?"
read say;
if [ ${STR1} = ${say} -o ${STR2} = ${say} ]; then
mkdir -p $ndir
;
echo'ディレクトリを作成しました。'
elif [ ${STR3} = ${say} -o ${STR4} = ${say} ]; then
echo'処理をキャンセルしました。'
else
echo'入力値が無効です'
fi
~
~
"./ensyu11_3_2" 21L, 443C
試したこと
①スペルミスが無いか確認・スクリプトの書き直し。
②echo"入力値が無効です"→echo'入力値が無効です'
(ダブルクォーテーション→シングルクォーテーションに変更)⇒詳しい理由は分かりかねますが、WEB上の例題を流用しました。
③if文[]内の前後にスペースを入れた。
どのようにコマンドを使ったらいいかわかっておらず、WEBで同じエラーが発生した時の対処法を試していました。
絶対パスを使用する対処法もありましたが、あまり理解ができておらずスルーしております…。