Bash 스크립트를 실행할 때 자체적으로 계산할 수 없습니다

Bash 스크립트를 실행할 때 자체적으로 계산할 수 없습니다

이 명령을 실행하는 위치에 abash 스크립트가 있습니다 ./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_MODIFstring 으로 설정합니다 stat -c %Y '/home/agrillet/a'. 출력이 생성되지 않습니다.

나중에 변수를 따옴표로 확장하면 "$BOOTSTRAP_MODIF"해당 문자열을 문자열로 얻게 됩니다. 오류 메시지는 Bash가 해당 이름(공백 및 모두)을 사용하여 명령을 실행하려고 시도하는 것처럼 보이지만 해당 명령이 없습니다.

bash -x(또는)을 사용하여 스크립트를 실행 sh -x하거나 set -x스크립트 내에서 이를 사용하여 쉘이 실제로 실행하려고 하는 명령이 무엇인지 확인할 수 있습니다.

바라보다배쉬 FAQ 050나중에 사용하기 위해 명령을 저장하는 방법에 대해 설명합니다.

관련 정보