2016-05-06 6 views
1

ユーザーからのユーザー入力を取得してから、より多くのユーザー入力を収集するか、すぐにスクリプトを実行することで対処しようとしています問題のビットに。ここで私が持っているコードは、これまでのところです:文字列にユーザー入力を割り当てて別の文字列と比較する方法

#!/bin/bash 

while true 
do 
    read -p "Would you like to run the script with custom dates? (y/n) " answer 

    case $answer in 
    [yY]*) export ANSWER=Y 
      break;; 

    [nN]*) export ANSWER="N" 
      exit;; 

    *)  echo "Not a valid response, please answer with Y or N";; 
    esac 
done 

if [$ANSWER = Y] 
then 
    echo "Answered yes" 
else 
    echo "Answered no" 
fi 

私は私の答えのためにYを入力すると、私はエラーを取得:./getRatings.sh: line 18: [Y: command not found

私はbashに非常に新しいだと私は超簡単な何かが欠けていると確信しています誰でもこの仕事をする方法を知っていますか?

答えて

1

エラー./getRatings.sh: line 18: [Y: command not foundは、スクリプト./getRatings.shで は、ライン18上で、シェルは[Yコマンドを実行しよう、ということを意味し、それはそれを見つけることができませんでした。 これは、答えが の場合はYと入力し、次に[$ANSWERの場合は[Yと解釈されたためです。 [組み込みの を使用したい場合は、[の後ろにスペースを入れる必要があります。 また、]の前にbtw。

[の後にスペースを入れないと、コマンドの後に空白を入れないのと同じです。たとえば、ls some/pathの代わりに、lssome/pathと書いても、明らかに動作しません。

ので修正は同じくらい簡単です:答えはイエス、echo "Answered no"に到達することはありませんでないときに終了するので、ところで

if [ $ANSWER = Y ] 

さらに、ANSWERという変数をexportにする必要はありません。

シェルスクリプトに慣れていないので、私はhttp://www.shellcheck.net/をチェックアウトすることをお勧めします。そこにBashスクリプトをコピー&ペーストすることができ、バグや悪い習慣を見つけて説明することができます。

+0

私はそれが何か簡単なことを知っていた...助けてくれてありがとう、私は11分であなたの答えを受け入れるよ! –

+0

ちょうどあなたの編集を見ました、出口のヒントのおかげで、別のサイトからそのクッキーカッターコードを手に入れました - 私はめったにスクリプト言語で作業するので、多くのコードが他のソースからコピーされています。また、そのリンクに感謝! –

関連する問題