2010-11-23 9 views
0

まあ、私は現在、初心者シェルスクリプトです。私は、HTML、JScript、VB.NET、C++のJavascriptなど、他のプログラミング言語に関する基礎知識を持っています。 (そうではなく、私の足を水に浸しただけです)。最近の私の最近のプロジェクトでは、Bashシェルスクリプトについてできる限り学びたいと考えています。現在の問題は、状態エラーコードを理解することと、特定のパラメータにディレクトリが含まれているかどうか、またはディレクトリが存在するかどうかを確認することです。私はチュートリアルとレビューの質問で、本から取り組んでいます。残念なことに、答えのキーはありません。また、そのことについてのヒントもありません。BASHスクリプトヘルプが必要です

  • 表示状態1とエラーメッセージを表示して終了ソースディレクトリ
  • ない場合は、パラメータは、
  • 表示をステータス2とエラーメッセージを表示して終了を与えられていない場合、ステータス3とのエラーメッセージを表示して終了宛先が存在しないか、ディレクトリでない場合

上記のことは、これまでのところ私が正しくやっていると信じている最初のものです。正しくない場合は、私を修正してください。 。サンプルが与えられたときに私が最もよく学ぶように、私は助けを求めるだろうと思った。

if [ $? ]; then 
    echo "You must supply at least one parameter" 
    exit 1 
fi 
    #The above is the part I am pretty sure is correct. 


if [ $? -d $directory "$1" ]; then 
    echo "$directory is not a directory" 
    exit 2 
fi 
#The above was self written. I am almost positive it is wrong. 

if [ $? -lt 2 ]; then 
    set "$1" .pwd 
fi 
#the above was given to me from the book as a reference point to start (tutorial) 

答えて

2

$?は、実行するコマンドのリターンコードです。たぶんあなたはそれが現在のスクリプトのリターンコードだと思っています。いずれにせよ、それはあなたが思っていることをしていない。ソースは、ディレクトリ

if [ ! -d "$1" ]; then 
    echo "$1 is not a directory" 
    exit 2 
fi 
ない場合

if [ ! "$#" ]; then 
    echo "please supply a parameter" 
    exit 1 
fi 

表示エラー:何もパラメータが指定されていない場合script [source] [destination]

エラーメッセージ:

私の例のすべては、あなたのコマンドはそうのように実行されると仮定します

宛先が存在しないか、ディレクトリでない場合はエラーを表示します

if [ ! -d "$2" ]; then 
    echo "$2 doesn't exist or isn't a directory" 
    exit 3 
fi 
+0

'if'と' [''の間にはスペースが必要です。フィールドの分割とパス名の生成を避けるには、 '$ 1'と' $ 2'を引用符で囲む必要があります。 '||'はコマンドを区切って 'if [! -e "$ 2"] || [! -d "$ 2"]; ( '-e'テストはここでは冗長ですが、' -d'は存在しなければ既にfalseを返しています)。感謝@ジャイルズ – jilles

+0

。あなたの提案ごとに変更されました – Cfreak

+0

うわー、あなたはそれを述べるようになったので、私はそれを自分で得たはずです。私は自分のシェルで試そうとしたことさえしませんでしたが、それを見るだけで100%正しいと思われます。私は速い応答に感謝します。ありがとうございました。 –

関連する問題