1

bash で noob を完了します。既存のスクリプトを編集しようとしています。「Bash オペレーター」などを Google で検索しましたが、これが見つかりません。

スニペットは次のとおりです。

if [ "${activ_con}" -a ! "${activ_vpn}" ];
then
    nmcli con up id "${VPN_CONNECTION_NAME}"
fi

「-a !」が何であるかを知りたいだけです。ビットがやっています。ありがとう。(いつものように、おそらく数分以内に見つかります... GOogle に戻ります!)

4

3 に答える 3

4

「そして」という意味です。

testのマニュアルページから:

 expression1 -a expression2
               True if both expression1 and expression2 are true.

ブラケットは の同義語ですtest

于 2013-11-09T20:31:04.690 に答える
1

( -a) は「and」演算子であり-o、「or」演算子です。

別の方法として、次を使用します。

if [ -n "${activ_con}" ] && [ -z "${activ_vpn}" ]
then
    nmcli con up if "${VPN_CONNECTION_NAME}"
fi

"${activ_con}"これは、 の長さがゼロでないことと、長さがゼロであることを明示的にテストし"${active_vpn}"ます。これは、Autoconf シェル スタイル ルールで推奨されているスタイルに近いものです (ただし[、角括弧はメタ文字であるため、テストにはまったく使用されません。一部の古い実装 (おそらく 1980 年代と 1990 年代初頭) には、オペランドを誤解する問題がありました)。これらは混乱を招くオプションであったため、 andtestの使用を避けるようにアドバイスされています。-a-o

test(and[は の同義語です。test多くのシステムで/bin/[は、 へのリンクであるコマンドもあり/bin/testますが、シェルは通常、 の組み込み実装を使用しtestます) -a. test( POSIX サイトのページの根拠セクションに注意してください。)

条件式の GNUbash仕様は、接続詞としてリストされておらず、まったくリストされていません。それは面白い。-a-o

于 2013-11-09T20:31:05.610 に答える
0

-a と -o はいわゆる複合文です。-a は論理演算子「&&」と同じで、-o は論理演算子「||」と同じです。オペレーター。違いは次のとおりです。

if [conditionA -o conditionB] 

に比べ:

if [conditionA] || [conditionB]

-a と && も同じです。

于 2013-11-09T21:39:18.483 に答える