簡體   English   中英

通過比較Shell腳本中的兩個字符串來請求變量

[英]request a variable by comparing two strings in shell script

我想比較兩個變量,以檢查此比較是否為空。 我知道它很混亂,但是我不知道如何更好地解釋它。 這是一個小的示例代碼:

declare -a List=("human" "animal")
sqlhuman="SELECT * FROM example;"

for i in "${List[@]}"
do
   if[ -n "sql$i"];then
       #execute sql
   else
       #do nothing
   fi
done

在這種情況下,腳本將檢查“ sqlhuman”和“ sqlanimal”是否為空。 當然它們不是空的。 兩者都有超過1個字母。 我希望它們作為變量的指針,並檢查它們是否為空。

所以我需要的是動態構建變量目錄。 例如,在第一個迭代器上,他應該檢查$ sqlhuman是否為空。

您正在檢查字符串 sqlhuman是否為空,而不是名為sqlhuman的變量的內容。 使用間接參數擴展:

var="sql$i"
if [ -n "${!var}" ]; then

也就是說,功能將是一種更為簡潔的方法。

do_sql () {
    case $1 in
        human) echo "running sql for human" ;;
        animal) echo "running sql for animal" ;;
        *) echo "doing nothing" ;;
    esac
}

for i in "${List[@]}"; do
    do_sql "$i"
done

暫無
暫無

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

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