gpt4 book ai didi

linux - 在 bash 中解析变量

转载 作者:行者123 更新时间:2023-12-05 01:03:48 25 4
gpt4 key购买 nike

我有一个文件包含几行,在某些行中有一个像这样的变量:

The-first-line
The-second-${VARIABLE}-line
The-third-line

在 bash 脚本中,我想读取行并解析存在的变量。

VARIABLE=Awesome
LINES=$(echo $(cat file.txt))
for i in $LINES
do :
echo "$i"
done

输出与输入文件相同(未解析的变量),但我想要这样的东西:

The-first-line
The-second-Awesome-line
The-third-line

提前感谢您的帮助!

最佳答案

您可以尝试以下方法(使用支持 namerefs 的最新版本的 bash):

while IFS= read -r line; do
while [[ "$line" =~ (.*)\$\{([^}]+)\}(.*) ]]; do
declare -n var="${BASH_REMATCH[2]}"
printf -v line '%s%s%s' "${BASH_REMATCH[1]}" "$var" "${BASH_REMATCH[3]}"
done
printf '%s\n' "$line"
done < file.txt

在最里面的循环中,只要有一个 ${VARIABLE} 变量引用,我们就会迭代,我们将其替换为变量的值,感谢 BASH_REMATCHvar nameref 和 printf-v 选项。

警告:如果您有一个名为的变量,例如 VARIABLE 并且其值是 ${VARIABLE},则此脚本将进入无限循环。

关于linux - 在 bash 中解析变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73459563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com