명령 출력을 변수로 설정

명령 출력을 변수로 설정

다음과 같은 명령 에서 사용하기 위해 head -15 textfile.txt변수 에 출력을 어떻게 넣을 수 있습니까 ?$Xif

 if $X = 'disabled' then

?

답변1

x="$(head -15 testfile.txt)"
if [ "$x" = disabled ]
then
    echo "We are disabled"
fi

일반적으로 명령의 출력을 쉘 변수로 캡처하려면 다음 형식을 사용하십시오 variable="$(command args ...)". 부분 variable=은 할당입니다. 부분 $(...)은 명령 대체입니다.

또한 쉘은 if형식의 명령문을 수행하지 않는다는 점에 유의하십시오 if $X = 'disabled'. 쉘은 명령이 다음에 오는 것으로 예상 if하고 쉘은 해당 명령의 반환 코드를 평가합니다. 위의 경우 또는 test로 작성할 수 있는 명령을 실행합니다 .test ...[ ... ]

많은 사람들은 쉘 스크립트에 소문자 변수를 사용하는 것이 모범 사례라고 생각합니다. 이는 시스템 정의 변수가 대문자이고 실수로 덮어쓰는 것을 원하지 않기 때문입니다. 반면에 호출되는 시스템 변수가 없으므로 X여기서는 실제 문제가 되지 않습니다.

관련 정보