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

おすすめ記事