pathname=$(cat $HOME/.rm.cfg)
if [ ! -z $pathname/$1 ]
.rm.cfg
을있는 경우 체크 예상 오류는 이름 다음 디렉토리이항 연산자 전체 경로 이름을 가진 파일이
/홈/사용자 이름/deleted1
$1
를 포함하는 파일입니다 예 : 파일 유리
[ ! -z $pathname/$1 ]
줄이 왜 이진 연산자 예상 오류를 발생시키는 지?
pathname=$(cat $HOME/.rm.cfg)
if [ ! -z $pathname/$1 ]
.rm.cfg
을있는 경우 체크 예상 오류는 이름 다음 디렉토리이항 연산자 전체 경로 이름을 가진 파일이
/홈/사용자 이름/deleted1
$1
를 포함하는 파일입니다 예 : 파일 유리
[ ! -z $pathname/$1 ]
줄이 왜 이진 연산자 예상 오류를 발생시키는 지?
$ 경로 이름에 두 개 이상의 단어가 포함 된 것 같습니다. .rm.cfg 파일에 여러 줄이 있거나 경로에 공백이있을 수 있습니다. 어쨌든
if [ ! -z word word word/$1 ]
으로 끝납니다. 당신은 단지 하나의 경로를 기대하고 경로 포함 공백을 방지하고자하는 경우,
if [ ! -z "$pathname/$1" ]
에 경우 줄을 변경 내가 이항 연산자가 I가 두 개 이상의 단어를 얻고있다 예상 동일한 오류에 직면했다 일부 변수. 나는 그것을 아래 언급처럼 사용했을 때.
if [ ! -z ${variable} ];
그래서 해결이 오류 나는 그것을 변경 : 나를 위해
if [[ ! -z ${variable} ]];
위대한! 나를 위해 일했다. 그러나 그 솔루션이 왜 작동하는지 어떤 생각입니까? –
, 문제는 내가 $ 경로 이름의 나의 정의에 후행 공백이 있었다이었다. 이 문제를 방지하기 위해 strip 함수를 사용했습니다. ([here] (https://www.gnu.org/software/make/manual/html_node/Text-Functions.html) 참조). – rkersh
답변을 수락하십시오! –