行連続文字をいつ使用し、いつ使用しないのですか?

行連続文字をいつ使用し、いつ使用しないのですか?

「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つのコマンドで処理する必要があります。)elsefielsefiecho foo; echo bar

おすすめ記事