将 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

相关内容