使用包含变量名称的数据/输入的脚本

使用包含变量名称的数据/输入的脚本

所以我有一个文件“Directories.dat”,其中包含要读取的在多台计算机上运行的脚本的目录列表。因此,文件中的目录列表通常用变量定义,例如

#Directories.Dat
/home/$USER
$WORKDIR
$APPDIR
...etc 

然而,当脚本运行Directories.dat文件时,$line最终被设置为/home/$USER而不是/home/myuser

#!/bin/bash
#myscript.sh
for line in $(cat Directories.dat) 
do 
SomeCommand $line
done

我不应该使用吗cat?是eval唯一适合执行此操作的函数吗?例如SomeCommand $(eval echo $line) #DangerZone 或者是否有其他方法来读取 Directory.dat 文件中的行并将变量显示为其存储值?

答案1

从问题转移

#!/bin/bash
source bashrc.sh mysources.sh
#myscript.sh
for line in $(cat Directories.dat) 
do 
SomeCommand $(echo $line | envsubst)
done

相关内容