find의 출력을 원격 서버의 변수에 저장합니다.

find의 출력을 원격 서버의 변수에 저장합니다.
# 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

관련 정보