「Linuxコマンドラインブック」を読んで次の行の連続文字を見つけましたが、なぜこの文字をfindコマンドで使用するのか混乱しています。
find playground \
\( \
-type f \
-not -perm 0600 \
-exec chmod 0600 {} \; \
\) \
-or \
\(
other options...
\)
そしてif文と一緒に使用するとどうでしょうか?
if [ $x -eq 5 ]; then
echo "x equals 5."
else
echo "x does not equal 5."
fi
ベストアンサー1
簡単な答えは前者が必要で、後者は必要ないからです。
コマンドfind
は一つ他のいくつかのパラメータが必要で、独自の構造を持つ単純なシェルコマンドです。これらの引数はシェルには意味がないため、(
間に論理接続があることはまったくわかりません)
。完全なコマンドは一行に書くことができますが、読みにくくなります。
行の連続がない場合、デフォルトの印刷find
ジョブはrunでplayground
あり、シェルは引数なしでコマンドを実行しようとします(またはエスケープを削除したい場合はサブシェルから(
)。-type
(
find playground
\(
-type f
...
一方、if
複合文はシェル構文の一部であり、シェルはどの部分が必要かを知っています。そして最後に、orの後にthen
コマンドが来なければなりません。構造全体を1行に書くこともできますが、前にセミコロンを追加する必要があります。 (セミコロンまたは改行文字も2つのコマンドで処理する必要があります。)else
fi
else
fi
echo foo; echo bar