簡體   English   中英

Alpine 中的 ASH/BASH:如何從從列表文件讀取的變量名列表中擴展變量

[英]ASH/BASH in Alpine: how to expand a variable from a list of variable names read from a list file

我一直試圖找出一種方法來從從文件中的列表中讀取的字符串(變量名)中擴展變量。

這里的目標是評估 gitlab 管道中的所有變量是否都存在,如果不存在,則使管道失敗。

最好的解決方案是將其作為單行並使用 Alpine 的 ash shell 工作,但 bash -c “某物”也可以。

顯然, (!) 擴展字符存在問題,因為 varcontent 始終為空,但我無法弄清楚我做錯了什么。

alpine314:~# cat checkvars.sh
#!/bin/bash
false=false
while read -r line; do
    varcontent=${!line}
    if [ -z "$varcontent" ]; then
        echo "Error: Missing a required pipeline variable."
        false=true
        exit 1
    else
        echo "$line: $varcontent"
    fi
done < $1
alpine314:~# cat varsfile
VAR1
VAR2
VAR3
alpine314:~# echo $VAR1
1
alpine314:~# echo $VAR2
2
alpine314:~# echo $VAR3

alpine314:~# bash -x checkvars.sh varsfile
+ false=false
+ read -r line
+ varcontent=
+ '[' -z '' ']'
+ echo 'Error: Missing a required pipeline variable.'
Error: Missing a required pipeline variable.
+ false=true
+ exit 1
alpine314:~#

此處所需的行為是在任何變量為空/未設置的情況下以錯誤退出腳本。

干杯!

我做錯了什么。

您的變量不會導出。 在運行您的腳本之前運行以下命令。

 export VAR1 VAR2 VAR2

使用 shellcheck 檢查您的腳本。 false=true - 最好使用不同的變量名...

暫無
暫無

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

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