몇개의 파일을 원격 호스트와 동기화시키는 스크립트가 있습니다. 내가 발행 할 명령의 형식은`~`의 확장을 막으십시오
rsync -avz ~/.alias [email protected]:~/.alias
내 스크립트는 다음과 같습니다
files=(~/.alias ~/.vimrc)
for file in "${files[@]}"; do
rsync -avz "${file}" "[email protected]:${file}"
done
그러나 항상 ~
확장됩니다 사실 내가 명령을 호출
rsync -avz /home/user/.alias [email protected]:/home/user/.alias
위의 예 대신
하지만 홈 디렉토리 경로는 서버에있는 경로와 동일하지 않습니다. 예를 들어 사용할 수 있습니다. 이 부분을 대체하려면 sed
이지만, 모든 경로가 다른 여러 서버에서이 작업을 수행하는 것은 지루합니다. 스크립트 실행 중에 확장되지 않고 ~
을 사용할 수 있습니까? 그렇지만 rsync
은 홈 디렉토리가 ~
을 의미한다는 것을 알고 있습니까? 당신은 루프 필요가 없습니다
탈출을하거나 원격 서버에 확장해야하기 때문에 작동하지 않습니다 당신의 경로 – BroSlow
을 인용. – pfnuesel
배열을 할당하면 확장됩니다. 배열 할당에서 인용 된 경로를 두 번째 배열로 만들고 인덱스 또는 무언가를 반복하십시오. 이해합니다. 확실하지 않은 경우 – BroSlow