簡體   English   中英

檢查bash中是否設置了未知變量

[英]Check if an unknown variable is set in bash

我想檢查是否設置了變量。 我看到關於這個主題的嚴重帖子,但不是針對以下用例。 在我的情況下,我有一個無限數量的變量(BASE1 ... BASEn),我想檢查是否定義了BASEX變量。

BASE="BAS0"
BASE1="BAS1"
BASE2="BAS2"
BASE3=""

var="";
cpt=0;
while true
do
    if [ $cpt -eq 0 ];
    then
            if ! ${BASE+false};
            then
                    echo "BASE:${BASE}is set";  ### -->  Ok it works
            else
                    echo "NOT set";
                    break;
            fi
    else
            if [ -z BASE${cpt} ];  ### ---> don t work
            then
                    if [ "BASE${cpt}" = "" ];
                    then
                            echo "BASE:${BASE}is set"; 
                    else
                            echo "BASE:${BASE}is empty ! ==> exit";
                            exit 0;
                    fi
            else
                    val="BASE${cpt}"
                    echo "$val NOT set";  ### -->  Always here !
                    break;
            fi
    fi
    cpt=`expr $cpt + 1`;
done

我嘗試了嚴厲的方法,但沒有成功:

if [ -z BASE${cpt} ]; ### ---> don t work
if ! ${BASE${cpt}+x}; ### ---> don t work
...

我能怎么做 ?

提前致謝。

由於您正在動態構造變量的名稱,因此您可能需要間接引用:

var="BASE$cpt"
if [ -z "${!var}" ]

聽起來你應該使用數組。

base=(BAS0 BAS1 BAS2 "")
for ((i=0; i<=4; ++i)); do
    echo "$i: ${base[$i]-false}"
done

順便提一下,你應該使用小寫字母作為你的變量名,這符合大寫字母為shell內部使用保留的約定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM