編集:これが私の更新されたコードです:
#!/bin/sh
files=`ls`
if [ $# -ne 1 -o -f $1 ]
then
echo "Usage: $0 <directory>"
exit 1
fi
if [ ! -e $1 ]
then
echo "$1 not found"
exit 1
elif [ -d $1 ]
then
cd $1
for f in $files
do
if [ ! -d "$f" ]
then
if [ ! -s "$f" ]
then
rm -r "$f"
echo "File: $f was removed."
else
continue
fi
fi
done
echo "Name\t\tLinks\t\tOwner\t\tDate"
for f in $files
do
find "$f" -type f -printf "%f\t\t %n\t\t %u\t %TH %Tb %TY\n"
done
exit 0
fi
スペースの問題をすべて修正し、#!bin/sh を #/bin/bash に変更し、"$f" に引用符を追加しました。ただし、まだ多くのエラーが発生しています。
ava@kosh:~/test$ ./delDir d1 rm:
d1': No such file or directory File: d1 was removed. rm: cannot remove
delDir を削除できません': そのようなファイルまたはディレクトリはありません ファイル: delDir は削除されました。rm: 削除できませdelDir2': No such file or directory File: delDir2 was removed. rm: cannot remove
ん e1': そのようなファイルまたはディレクトリはありません ファイル: e1 は削除されました。rm:e2': No such file or directory File: e2 was removed. rm: cannot remove
make_d1 を削除できません': そのようなファイルまたはディレクトリはありません ファイル: make_d1 は削除されました。名前\t\tLinks\t\tOwner\t\t日付 検索: d1: そのようなファイルまたはディレクトリはありません 検索: delDir: そのようなファイルまたはディレクトリはありません 検索: delDir2: そのようなファイルまたはディレクトリはありません 検索: e1: そのようなファイルまたはディレクトリはありません 検索: e2: No such file or directory find: make_d1: No such file or directory ne1 2
ava 22 Nov 2009 ne2
2 ava 22 Nov 2009
私が他に何を間違っているか知っている人はいますか?
これが私のコードです:#!/bin/sh files=`ls` if [ $# -ne 1 ] then echo "Usage: $0 <directory>" exit 1 fi if [ ! -e $1 ] then echo "$1 not found" exit 1 elif [ -d $1 ] then cd $1 for f in $files do if [! -d $f] then if [ ! -s $f ] then rm-r $f echo "File: $f was removed." else continue fi fi done echo "Name\t\tLinks\t\tOwner\t\tDate" for f in $files do find $f -type f -printf "%f\t\t %n\t\t %u\t %TH %Tb %TY\n" done exit 0 fi
ここに私の質問があります:
通常のファイルではなく、ディレクトリでもないものを使用してスクリプトを実行する場合、「使用法: ファイル名ディレクトリ」と表示します (5 行目を参照)。2 つの if ステートメントでこれを実行できることはわかっていますが、これに対して or ステートメントを bash で作成することは可能ですか?
スクリプトを実行すると、次のようなエラーが発生し続けます。
./delDir: 39: [!: 見つかりません./delDir: 39: [!: 見つかりません./delDir: 39: [!: 見つかりません./delDir: 39: [!: 見つかりません./delDir: 39: [!: 見つかりません./delDir: 39: [!: 見つかりません./delDir: 39: [!: 見つかりません./delDir: 39: [!: 見つかりません./delDir: 39: [!: 見つかりません. /delDir: 39: [!: 見つかりません 名前
リンク 所有者 日付 find: d1: そのようなファイルまたはディレクトリはありません find: delDir: そのようなファイルまたはディレクトリはありません find: delDir2: そのようなファイルまたはディレクトリはありません e1 1
ava 2009 年 11 月 22 日 e2
1 ava 2009 年 11 月 22 日 検索: make_d1: そのようなファイルまたはディレクトリはありません ne1 2
ava 2009 年 11 月 22 日 ne2
2 ava 2009 年 11 月 22 日
for ループは最初にユーザーが入力したファイル (変更後のディレクトリ) を探し、それを見つけることができないため、これらのエラーが発生していると思います。これを修正するにはどうすればよいですか?3.他にエラーはありますか?