8

特定の変数が期待値と一致するかどうかを評価しています。変数は特定のプログラムによってメモリに設定され、その値はカスタム プログラムを使用してシェルからアクセスできます。

シェルコマンドの出力を awk にパイプして、必要な特定のフィールドを取得し、それを perl で実行して、期待値と一致するかどうかを確認します。例えば、

ysgrp autostart | awk -F\: '{print $1}' | perl -e 'print {"True"} else {print "False"} if /on/'

しかし、perl から "} else" 付近のコンパイル エラーに関する苦情が寄せられています。perlワンライナーでif/then/elseロジックをどのように処理しますか?

4

4 に答える 4

15

else接尾辞条件で条件を使用することはできません。次のような三項条件演算子を使用できます。

perl -e 'print /on/ ? "True" : "False"'

または、次のような明示的なブロックを使用します。

perl -e 'if ( /on/ ) { print "True" } else { print "False" }'
于 2012-05-08T17:45:01.857 に答える
3

この部分:

awk -F\: '{print $1}' | perl -e 'print {"True"} else {print "False"} if /on/'

perlで処理できます(awkを正しく覚えている場合):

perl -F/:/ -lane 'print $F[0] =~ /on/ ? "True" : "False"'

スイッチの使用に注意して-nください。これがないと、perlワンライナーは機能しません。また、印刷に改行を追加するスイッチにも注意し-lてください。これは、私が望むものだと思います。それ以外の場合、出力は次のようになります。

TrueTrueTrueFalseTrueFalse
于 2012-05-08T17:48:34.177 に答える
1

あなたができること:

 ... | perl -ne 'print /on/ ? "True" : "False"'

しかし、しないでください!あなたはやったほうがいいでしょう:

... | grep -qF on && echo True || echo False
于 2012-05-08T17:44:52.717 に答える
1

?:三項演算子を使用しない限り、そうではありません。構文はサポートしてfoo if barいませんelse

于 2012-05-08T17:43:14.703 に答える