したがって、複数のコンピュータで実行されているスクリプトについて読みたいディレクトリのリストを含む "Directories.dat"ファイルがあります。したがって、ファイルのディレクトリリストは通常変数として定義されます。
#Directories.Dat
/home/$USER
$WORKDIR
$APPDIR
...etc
/home/$USER
ただし、スクリプトがDirectory.datファイルを実行すると、$ lineが代わりに設定されます。/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