2016-08-14 7 views
-1

私はルートディレクトリにいますが、私はルート>ホーム>ログ>内のログから3つのログファイルを削除するスクリプトを作成しています。 スクリプトは存在するかどうかをチェックし、存在する場合は削除します。 私が助けてくれるなら、文法の問題に直面しています。UNIXスクリプトのディレクトリを変更する

おかげ

マイコード:私はここに./deleteを使用して、ルート内のファイルを実行すると

#!/bin/sh 
cd Home/Log 
if [ -e error1.log ] 
then 
rm error1 
fi 
if [ -e error2.log ] 
then 
rm error1 
fi 
if [ -e error3.log ] 
then 
rm error1 
fi 

がエラーとして何を取得していますされている:私は

$ ./delete 
: No such file or directoryme/Log 
./delete: line 14: syntax error near unexpected token `fi' 
+1

スクリプトを実行するときに 'Home/Log'というパスが現在のディレクトリであることは確かですか? –

+0

はい自分で作成しました – Johnny

+1

シェルでコマンドを1つずつ手動で実行するとどうなりますか? –

答えて

1

ルートディレクトリ

スクリプトを書くときは、ほとんどそのようなことを想定しない方が良いでしょう。ファイルがどこにあるのか分かっていて、現在の作業ディレクトリとなる場所に相対的な場所にいることが重要でない場合は、名前を付けます。

あなたが安全にしたいことを達成するための3つの方法があります。自明でないものについては

#!/bin/sh 
dir=/Home/Log 
rm -f ${dir}/error1.log ${dir}/error2.log ${dir}/error2.log 

または

#!/bin/sh 
dir=/Home/Log 
rm -f ${dir}/error{1,2,3}.log 

または

#!/bin/sh 
set -e 
cd /Home/Log && rm -f error1.log error2.log error2.log 

set -eはあなたの友達です。あなたの例では、スクリプトの後半で何も起こりません。あなたが望んでいないのは、と思うことです。あなたはディレクトリを変更しましたが、作成していないし、あなたが意図していないどこかに落書きを巻き込んでしまいます。多くの人がそのように多くを失ってしまった。

+0

ありがとうございました。 – Johnny

関連する問題