イムシェルコマンドの入門書を読んで、それは以下のようにOR文としてパイプコマンドを使用することを提案:パイプ演算子をOR文として使用できますか?
case "$1" in
start|START)
/usr/bin/sshd
;;
stop|STOP)
kill $(cat/var/run/sshd.pid)
;;
esac
は、なぜこの作品は/その背後にあるロジック何であるのか?
イムシェルコマンドの入門書を読んで、それは以下のようにOR文としてパイプコマンドを使用することを提案:パイプ演算子をOR文として使用できますか?
case "$1" in
start|START)
/usr/bin/sshd
;;
stop|STOP)
kill $(cat/var/run/sshd.pid)
;;
esac
は、なぜこの作品は/その背後にあるロジック何であるのか?
ここではパイプ演算子ではありません。これはcase
の構文の範囲内です。 man bash
を読んで、「複合コマンド」セクションに進み、ケースについて読んでください。ここで
は、bashのマニュアルが
case word in [ [(] pattern [ | pattern ] ...) list ;; ] ... esac
最初 が
word
展開し、 順番に各pattern
に対してそれを一致させようと、使用してcase
コマンドを言っているかの抽出物でありますパス名の拡張と同じマッチングルール(後述の パス名展開を参照)。ワードは、拡張、パラメータおよび変数の展開、演算子 の置換、コマンド置換、プロセスの置換および引用 の削除を使用して展開され、 が削除されます。各pattern
は、チルダ拡張、 パラメータと変数展開、算術置換、コマンド 置換、およびプロセス置換を使用して展開されます。シェルオプションnocasematch
が有効な場合は、アルファベット文字の場合は の大文字と小文字を区別せずに一致します。一致が見つかると、 に対応するlist
が実行されます。;;
演算子が使用されている場合、最初のパターンが一致した後には 以降の一致は試行されません。;&
を;;
の代わりに使用すると、次のパターンセットに関連付けられたlist
が実行され続けます。;;
の代わりにを使用すると、シェルはステートメント内の次のパターンリストがある場合は をテストし、一致した場合には対応するlist
を実行します。 パターンが一致しない場合、終了ステータスはゼロです。それ以外の場合は、list
で最後に実行されたコマンドの終了ステータスは です。
これは構文
case "$1" in start|START)
で、少なくとも一つのパターンを伝える上記の構文と一致する、または|
によって分離された複数の、aは
case word in [ [(] pattern [ | pattern ] ...) list ;; ] ... esac
あります垂直バー。
phoxisはパイプに使用されているのと同じ文字ですが、この文脈では、case
ステートメントの特別な構文の一部で、次のステートメントの実行を引き起こす複数の値を定義します区切り文字の;;
まで)。