bash 명령 분할에서 오류가 발생함

bash 명령 분할에서 오류가 발생함

rclone용 bash 스크립트를 생성하는 데 문제가 있습니다.

이로 인해 오류가 발생합니다.

20d: command not found


DAYS='20d'
PURGE='purge --min-age' ${DAYS}
rclone ${PURGE} ${DEST}/old/ $VERBOSE $LOGS

이게 효과가 있어

PURGE='purge --min-age 20d'
rclone ${PURGE} ${DEST}/old/ $VERBOSE $LOGS

첫 번째 것을 사용할 수 있도록 누군가 나를 도와줄 수 있습니까? DAYS만 변경하면 다른 사람들이 이 스크립트를 사용하는 것이 더 쉬울 것입니다.

답변1

PURGE변수에 대한 참조로 인해 이 문제가 발생합니다 .

현재 다음을 설정 중입니다.

PURGE='purge --min-age'

그런 다음구현하다 ${DAYS}(20d) PURGE환경의 변수.

다음을 수행할 수 있습니다.

purge=(purge --min-age "$days")

(배열은 인용되지 않은 변수보다 명령줄 인수를 보관하는 더 안전한 방법입니다.)

다음과 같이 호출할 수 있습니다.

rclone "${purge[@]}" "${dest}/old" "$verbose" "$logs"

참고: 환경 변수에는 대문자 변수 이름만 사용할 수 있습니다.


예를 들어:

$ FOO=bar env | grep FOO
FOO=bar
$ env | grep FOO
$

FOO변수를 로 설정한 다음 bar해당 env환경에서 해당 변수를 사용하여 명령을 실행합니다.

20d유효한 명령이 아니기 때문에 오류가 발생합니다 .

관련 정보