![변수 이름이 포함된 데이터/입력을 사용하는 스크립트](https://linux55.com/image/183628/%EB%B3%80%EC%88%98%20%EC%9D%B4%EB%A6%84%EC%9D%B4%20%ED%8F%AC%ED%95%A8%EB%90%9C%20%EB%8D%B0%EC%9D%B4%ED%84%B0%2F%EC%9E%85%EB%A0%A5%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8.png)
그래서 여러 컴퓨터에서 실행되는 스크립트에 대해 읽고 싶은 디렉터리 목록이 포함된 "Directories.dat" 파일이 있습니다. 따라서 파일의 디렉토리 목록은 일반적으로 변수로 정의됩니다.
#Directories.Dat
/home/$USER
$WORKDIR
$APPDIR
...etc
/home/$USER
그러나 스크립트가 Directories.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