if文呼び出し関数と誤った結果

if文呼び出し関数と誤った結果

シェルスクリプトは1つの関数のみを呼び出すことを期待していますが、実際には2つの関数を同時に呼び出します。この問題を解決する方法は次のとおりです。

どちらも同じです。

彼らは同じではありません

#!/bin/bash

var1=ORCL
var2=ORCL

function f1    
{  
    echo "both are same"
}

function f2
{
    echo "both are not same"
}

if [ $var1=$var2 ]; 
then
    f1  
fi

if [ $var1!=$var2 ]; 
then
    f2
fi

答え1

スペース関係演算子内で使用する場合に必須もし状況

前任者:

if [ $var1 = $var2 ] ;

if [ $var1 != $var2 ] ;

スクリプトの変更

#!/bin/bash

var1=ORCL
var2=ORCL

f1()
{
echo "both are same"
}

f2()
{
echo "both are not same"
}

if [ $var1 = $var2 ];
then
        f1
fi

if [ $var1 != $var2 ];
then
        f2
fi

答え2

スペースを追加する必要があります。

変える

if [ $var1=$var2 ]; 

そして

if [ "$var1" = "$var2" ];

2番目のif声明も同じです。

関連情報