#!/bin/sh
for file in /home/*
do
if [ "{$file}" != "/home/lost+found" ]
then
touch $file/FILE1
done
私が達成したいのは、すべての/home/ディレクトリを繰り返します。文書を除いて/家/紛失+発見。私は何が間違っていましたか?
答え1
fi
何もありません。 ifステートメントを終了し、文字通り中括弧を使用して{$file}
拡張するのを見逃しました{/home/somedir}
。中かっこを持つパラメータは、${file}
ドル記号が中かっこの外側になるように拡張されます。
また、パターンは/home/*
ディレクトリだけでなくすべてのファイルと一致するため、touch
ファイルが存在するとエラーが発生します。内容はあまりないかもしれませんが、ディレクトリだけが一致する/home
ようにパターンを変更するのは簡単です/home/*/
。末尾のスラッシュは変数の一部になるため、比較するときにこの点を考慮してください。 (またはテスト[ -d "$file" ]
。)
また、一般的に引用したいことは"$file"
...またはdir
ここに置くことがより適切かもしれません。
#!/bin/sh
for dir in /home/*/ ; do
if [ "$dir" != "/home/lost+found/" ] ; then
touch "$dir/FILE1"
fi
done