[英]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.