[英]“or” in bash scripting
腳本必須檢查OLD_VERSION
是否不為空或與某些模式不匹配。 我嘗試了以下代碼
#!/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時,我得到Not null或不匹配,我希望它打印為null。
$OLD_VERSION=""
+ PATTERN=ABC
+ OLD_VERSION=
+ [[ ! -z '' ]]
+ [[ ! '' =~ ABC ]]
+ echo 'Not null or doesnot match'
我得到錯誤的輸出。 我在或中遇到問題。 我究竟做錯了什么?
更新:
根據sureshvv的建議,我將其更新為:
if [[ ! "$OLD_VERSION" =~ "$PATTERN" && ! -z "${OLD_VERSION}" ]] ;
then
echo "Not null or doesnot match"
else
echo "matched or null"
fi
謝謝大家
我想你要:
if [[ ! -z "$OLD_VERSION" && "$OLD_VERSION" =~ "$PATTERN" ]]; then
echo Matched
else
echo No match
fi
||
由命令[[
處理,因此您必須將其放入[[
和]]
if [[ ! "$OLD_VERSION" =~ "$PATTERN" || ! -z "$OLD_VERSION" ]];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.