![Bash 스크립트를 실행할 때 자체적으로 계산할 수 없습니다](https://linux55.com/image/126997/Bash%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%EC%8B%A4%ED%96%89%ED%95%A0%20%EB%95%8C%20%EC%9E%90%EC%B2%B4%EC%A0%81%EC%9C%BC%EB%A1%9C%20%EA%B3%84%EC%82%B0%ED%95%A0%20%EC%88%98%20%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4.png)
이 명령을 실행하는 위치에 a
bash 스크립트가 있습니다 ./home/agrillet/
BOOTSTRAP_MODIF="stat -c %Y '/home/agrillet/a'"
출력은 다음과 같습니다./a: line 60: stat -c %Y '/home/agrillet/a': No such file or directory
그러나 터미널에서 동일한 명령을 실행하면 작동합니다.
$ stat -c %Y '/home/agrillet/a'
1517831544
두 경우 모두 루트로 명령을 실행하지 않습니다. 누군가 무슨 일이 일어나고 있는지 설명하고 스크립트를 실행할 때 스크립트에 대한 정보를 얻는 방법을 설명할 수 있습니까?
예를 들어 스크립트 내에서 다른 명령을 사용하면 cat /home/agrillet/a
스크립트 자체에서 스크립트를 인쇄할 수 있습니다.
답변1
이것:
BOOTSTRAP_MODIF="stat -c %Y '/home/agrillet/a'"
변수를 BOOTSTRAP_MODIF
string 으로 설정합니다 stat -c %Y '/home/agrillet/a'
. 출력이 생성되지 않습니다.
나중에 변수를 따옴표로 확장하면 "$BOOTSTRAP_MODIF"
해당 문자열을 문자열로 얻게 됩니다. 오류 메시지는 Bash가 해당 이름(공백 및 모두)을 사용하여 명령을 실행하려고 시도하는 것처럼 보이지만 해당 명령이 없습니다.
bash -x
(또는)을 사용하여 스크립트를 실행 sh -x
하거나 set -x
스크립트 내에서 이를 사용하여 쉘이 실제로 실행하려고 하는 명령이 무엇인지 확인할 수 있습니다.
바라보다배쉬 FAQ 050나중에 사용하기 위해 명령을 저장하는 방법에 대해 설명합니다.