腳本必須檢查OLD_VERSION
是否爲空或者是否與某些模式不匹配。我想下面的代碼「或」在bash腳本中
#!/bin/bash
OLD_VERSION="ABCDEFGHIJKL"
PATTERN="ABC"
if [[ ! "$OLD_VERSION" =~ "$PATTERN" ]] || [[ ! -z "$OLD_VERSION" ]];
then
echo "Not matched or not null"
else
echo "matched or null"
fi
對於上述輸入:
bash -x re.sh
+ OLD_VERSION=ABCDEFGHIJKL
+ PATTERN=ABC
+ [[ ! -z ABCDEFGHIJKL ]]
+ echo 'Not null or doesnot match'
我得到下面的輸出:
Not null or doesnot match
而且當我提出old_version空,我得到非空或不匹配,我期望它打印出null。
$OLD_VERSION=""
+ PATTERN=ABC
+ OLD_VERSION=
+ [[ ! -z '' ]]
+ [[ ! '' =~ ABC ]]
+ echo 'Not null or doesnot match'
我得到錯誤的輸出。我遇到問題了。我究竟做錯了什麼?
UPDATE:
由sureshvv建議,我更新它想:
if [[ ! "$OLD_VERSION" =~ "$PATTERN" && ! -z "${OLD_VERSION}" ]] ;
then
echo "Not null or doesnot match"
else
echo "matched or null"
fi
感謝所有。
定義'錯output' – amdixon
問題更新@amdixon – no1
五月如果你擺脫了雙重否定,就更容易閱讀。所以你可以說如果[-z「$ OLD_VERSION」|| 「$ OLD_VERSION」=〜「$ PATTERN」];然後回顯null或匹配; fi – sureshvv