# Declare the array
declare -a LC_lines
# Read the lines of the file into the array
readarray -t LC_lines < unique_running_jobs_directory.log
sshpass -p password ssh -n [email protected] "
cd /home/dummy/Desktop
files=(${LC_lines[@]})
existing_paths=()
for ((i=0; i<=\${#files[@]}; i++)); do
result=$(find . -type d -name "\${files[\$i]}")
cd $result
cd ..
rsync -ravuh --progress [email protected]:/remote_location ./
done
내 스크립트에 문제가 있습니다. 이 result
변수는 비어 있습니다. 출력을 저장하지 않으면 find
디렉토리 위치가 올바르게 인쇄됩니다. 변수에 저장하고 해당 변수에 대해 작업을 수행하면 echo
빈 문자열이 표시되고 cd
이를 수행할 수 없습니다 rsync
. 왜 이런 일이 발생하는지 아십니까?
답변1
몇 번 시도한 끝에 변수에 저장할 때도 각 변수에 이스케이프 문자를 사용해야 한다는 것을 알았습니다. 업데이트된 코드는 다음과 같습니다
# Declare the array
declare -a LC_lines
# Read the lines of the file into the array
readarray -t LC_lines < unique_running_jobs_directory.log
sshpass -p password ssh -n [email protected] "
cd /home/dummy/Desktop
files=(${LC_lines[@]})
existing_paths=()
for ((i=0; i<=\${#files[@]}; i++)); do
result=\"\$(find . -type d -name "\${files[\$i]}" -print)\"
cd \"\${result}\"
cd ..
rsync -ravuh --progress [email protected]:/remote_location ./
done