Bash 스크립트 dirs= "4";에 변수가 있습니다. 다른 파일에서 이 번호를 가져오고 싶기 때문에 dirs= sed -n '1p' < test.txt; 명령을 사용하면 번호가 표시됩니다. 터미널에서 확인해보세요. 그러나 코드에서는 dir.을 사용하여 디렉토리를 반복하고 싶습니다. 스크립트에서는 dir이 숫자라는 것을 이해하지 못하기 때문에 작동하지 않습니다.
d= sed -n '1p' < test.txt
for dirs in $d
do
echo "$dirs"
done
dirs= read $dirs
speeds= sed -n '2p' < test.txt
for speeds in $s
do
echo "$speeds"
done
for dir in $dirs
do
for speed in $speeds
do
echo "speed=$speed dir=$dir"
done
done
답변1
다음을 사용해야 합니다.speeds=$(sed -n '2p' < test.txt)
실제로 일어나는 일은 bash가 그 공간을 보고 다른 명령으로 speeds=
취급 한다는 것입니다. sed...
따라서 speeds
빈 문자열로 설정된 다음 실행됩니다 sed
(이것이 스크립트를 실행할 때 값이 인쇄되는 이유입니다. 값이 변수에 저장되는 대신 터미널에 인쇄됩니다). 하위 쉘에서 실행되고 출력을 반환하도록 sed
명령을 래핑한 $( )
다음 공백을 제거하고 =
원하는 변수에 할당해야 합니다 .