2016-10-24 1 views
0

シェルスクリプトで次のようにしたいと思っていました。シェルの変数にブール式の条件を代入する方法

変数CON_1をnoに基づいて割り当てます。私は、このシェル内で可能であるかどうかわからない私はメッセージに

if $CON_1; then 

を印刷していCON_1変数値に基づいて条件

if [ $# < 2 ];then 
CON_1=([ $m = Online ]) 
else 
CON_1=[ $m = Online -a ${#bld_stat} -gt 0 ] 

場合は渡された引数の、後、私は別のもので、このCON_1変数を使用します可能であれば、誰かが私にこのことを教えてください。

+0

あなたはCON_1' 'に設定しようとしているこの奇妙な値とは何ですか? '([$ m = Online])とは何ですか?? – Inian

+0

$ mは「オンライン/オフライン」の2つの値のいずれかになります。 – user2972122

+0

条件全体をCon_1に割り当てようとしています。 – user2972122

答えて

1

あなたは簡単に変数に結果を保存することができます

[ $m = Online -a ${#bld_stat} -gt 0 ] 
condition=$? 

をあなたも、変数に条件のソースを保存することができますが、あなたはそれを実行するevalが必要になります。

condition='[ $m = Online -a ${#bld_stat} -gt 0 ]' 
eval "$condition" 

evalを指定しないと、変数拡張は1回だけ行われるため、変数は展開されません。代わりに、変数の

機能使用:

condition() { 
    [ $m = Online -a ${#bld_stat} -gt 0 ] 
} 
if condition ; then ... 

をあなたも、関数に引数を渡すことができます。

condition() { 
    [ $m = Online -a ${#bld_stat} -gt "$1" ] 
} 
if condition 12 ; then # Will use 12 instead of 0 to compare. 
+0

は役に立ちました。ありがとう – user2972122

関連する問題