# 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