표시 ";" 근처의 구문 오류(숙제)

표시 ";" 근처의 구문 오류(숙제)

파일 이름을 입력받는 별칭을 작성하고 파일이 규칙적이고 읽을 수 있는지 확인한 후 파일을 cp -i백업 폴더에 복사합니다.$HOME/Backup

저는 UNIX를 처음 접했기 때문에 이 작업을 완료하는 데 약간의 어려움이 있습니다. 이것은 내 코드입니다.

alias getname='read filename'

alias vfile='getname; if [ ! -f $filename ]; then echo "Irregular file"; (exit 1); elif [ ! -r $file ]; then echo "Not readable"; (exit 2); fi;'


alias backup='vfile; if [ vfile ]; then cp -i $filename $home/Backup; fi;'

별칭을 테스트한 vfile결과 제대로 작동합니다. 발생한 오류는 다음과 같습니다.

-bash: syntax error near unexpected token ';'

첫 번째 작업으로 이 작업을 수행했을 때 이 오류가 발생하기 시작했습니다 . if 문 이전에 실행 vfile하지 않으면 마지막 실행의 파일 이름이 사용됩니다. 복사하기 전에 오류가 발생하지 않는지 vfile확인해야 합니다 .vfile

첫 번째 명령을 추가하기 전에 vfile다음 오류가 발생합니다.

cp: cannot create regular file '/Backup/*': No such file or directory

하지만 내 홈 폴더에 Backup이라는 디렉터리가 있어서 그 원인이 무엇인지 모르겠습니다.

답변1

별칭은 vfile으로 끝나고 ;별칭은 backup으로 시작됩니다 vfile;. 따라서 ;두 개의 연속된 s 사이에는 명령문이 없으며 이는 허용되지 않습니다.

$ echo ; ;
bash: syntax error near unexpected token `;'

;마지막 것을 제거하십시오 vfile.

답변2

두 개의 별칭을 사용하는 대신 이전 질문의 별칭을 사용하세요.

vfile 별칭이 잘못되면 오류 코드가 발생하므로 다음과 같이 할 수 있습니다.

alias filebackup='vfile && cp -i "$filename" "$HOME/Backup/"'

종료 시 에만 &&명령을 실행 하도록 지시합니다.cpvfile0

편집하다 미안 피곤해

$home은 유효한 환경 변수가 아니므로 어딘가에 수동으로 설정하지 않는 한 "해당 파일 또는 디렉터리 없음" 오류가 발생하는 이유를 설명하려면 ''항상 변수를 참조하는 .

관련 정보