所以我有一个文件“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