# 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