名前がテキストファイルにある場合は、ディレクトリからファイルをコピーします。

名前がテキストファイルにある場合は、ディレクトリからファイルをコピーします。
#!/bin/bash

while IFS='' read -r line || [[ -n "$line" ]]; do
    cd /home/Sud/Minimal\ Packages/All/
    if [ -d $line ]
    then
        cp $line*.rpm /home/Sud/NewFolder/rpms/
    else
        echo $line>>/home/Sud/NewFolder/notfound.txt
    fi
done < "$1"

上記のコードを実行しようとしています。

  1. テキストファイルを1行ずつ読み込む
  2. 同じ名前のディレクトリが存在する場合は、そのフォルダを検索してください。
    • ㅏ)その場合は、そのディレクトリの内容を別のディレクトリにコピーします。
    • 雨)そうでない場合は、ディレクトリ名を別のテキストファイルにコピーしてください。

スクリプトを実行するたびに、notfound.txt検索中のフォルダに名前があってもすべての名前がコピーされます。

私はどこで間違っていますか?

ベストアンサー1

スペースを正しく処理するために、すべての目的を$line二重引用符で囲むことはできますか?

#!/bin/bash
while IFS='' read -r line || [[ -n "$line" ]]; do
cd /home/Sud/Minimal\ Packages/All/
if [ -d "$line" ]
then
    cp "$line*.rpm" /home/Sud/NewFolder/rpms/
else
    echo "$line" >> /home/Sud/NewFolder/notfound.txt
fi
done < "$1"

おすすめ記事