터미널에서 이 zsh link 명령을 실행합니다.
cd /path/to/backups/pod3 && rm -rf ./*(Om[1,-10])
이것은 잘 작동하고 예상대로 해당 디렉토리를 삭제합니다.
그러나 스크립트에 넣으면 다음과 같은 오류가 발생합니다.
syntax error near unexpected token `('
몇 가지 조사를 해본 결과 쉘 스크립트에서 이를 설정해야 할 것 같습니다.
setopt extended_glob
그러나 스크립트 상단에 해당 줄을 추가하면 자체 오류가 발생합니다.
setopt: command not found
그래서 여기서 내가 뭘 잘못하고 있는지, 어떻게 해결해야 할지 잘 모르겠습니다.
답변1
스크립트가 에 의해 해석되어야 함을 시스템에 알리려면 스크립트에 she-bang을 추가해야 합니다 . zsh
그렇지 않으면 다음에 의해 해석됩니다 .sh
#! /bin/zsh -
cd /path/to/backups/pod3 && rm -rf ./*(Om[1,-10])
/bin/zsh
실행 파일의 실제 경로로 변경 zsh
하거나 전체 she-bang 줄을 다음과 같이 변경합니다.
#! /usr/bin/env zsh
zsh
조회에 사용할 경로입니다 $PATH
( 대부분의 시스템에 env
명령이 있다고 가정 /usr/bin
).