중첩된 큰따옴표가 포함된 bash 스크립트를 작성하고 싶습니다. 나는 모든 일반적인 트릭, 특히 rprint
모두가 추천하는 트릭을 시도했습니다. 하지만 내가 시도한 것은 아무것도 작동하지 않습니다. 특히 따옴표를 중첩할 수는 있지만 따옴표 앞에 넣는 것은 rprint -v name "%q "
처리할 수 없습니다 . \
결국 나는 이 극도로 투박한 패치워크를 선택했습니다.
shCommand=`echo !ssh -p $othPort!`
execThis=`echo rsync -e $sshCommand etc etc | tr '!' '"'`
eval $execThis
그래서 exec이것이 제가 원하는 것입니다.
rsync -e "ssh -p XXXX" etc etc
하지만 이를 수행하는 더 좋은 방법이 있어야 합니다. 왜냐하면 a)극도로역겹고 b) 내가 필요하면 작동하지 않을 것입니다! 다음 줄에는아니요절대 사용하지 않는 특수문자입니다 bash
. 이 상황에서 실제 bash 프로그래머가 무엇을 할지 말해 줄 수 있는 사람이 있습니까? 어떤 조언이라도 진심으로 감사드립니다
답변1
othPort=XXXX
shCommand="ssh -p $othPort"
cmdline=(rsync -e "$shCommand" etc etc)
"${cmdline[@]}"
othPort=XXXX
shCommand="ssh -p $othPort"
cmdline="rsync -e \"$shCommand\" etc etc"
eval "$cmdline"