따옴표와 관련된 안내 및 답변을 알고 있습니다. 나는 그들 (하루 종일)을 읽었지 만 나는 여전히 간단한 스크립트를 얻을 수 없다.변수에서 rsync 명령 실행 - 따옴표 사용하지 않음
script1.sh를 설정하고 명령을 실행 해 봅니다. 명령은 변수에 읽혀 져야하므로 에코를 수행하고 실행하고 나중에 다른 작업을 수행 할 수 있습니다.
내 명령은 내가 떠들썩한 파티에서 실행할 경우 예상대로 작동
rsync -vtirn -e ssh --exclude '._*' --exclude '[email protected]*' --exclude '.DS_Store' --progress /Path/ [email protected]:/Path
이고 난 내 스크립트에 넣어합니다.
사이에 변수를 넣으면 --excludes가 더 이상 작동하지 않습니다.
job='rsync -vtirn -e ssh --exclude '"'"'._*'"'"' --exclude '"'"'[email protected]*'"'"' --exclude '"'"'.DS_Store'"'"' --progress /Path/ [email protected]:/Path
echo $job
$job
이상한 점은 에코가 내가 필요한 명령을 정확히 보여줍니다. 에코 출력을 복사하여 쉘에 붙여 넣으면 명령이 올바르게 작동합니다. 그러나 $ job으로 시작된 명령은 제외 목록을 무시하는 것입니다.
큰 따옴표 만 사용하여 작은 따옴표 (/ ')를 이스케이프하여 처음과 끝에서 큰 따옴표로 시도했습니다 ... 너무 많은 옵션이 있지만 내'--exclude '필터'인수는 고려하지 않았습니다. 작동 한 유일한 것은
job=$(rsync -vtirn -e ssh --exclude '._*' --exclude '[email protected]*' --exclude '.DS_Store' --progress /Path/ [email protected]:/Path)
입니다. 그러나이 명령은 변수가 설정되는 즉시 시작됩니다 어떤 도움
자세한 내용은 [BashFAQ # 50] (http://mywiki.wooledge.org/BashFAQ/050)에서 설명합니다. –