ユーザーがサーバー名、ユーザー名、およびパスワードを入力した後、Pythonスクリプト(IMAPを介して重複した電子メールを削除するために使用されます)を実行するスクリプトがあります。最初の部分はフォルダのリストを取得し、2番目の部分はそれを入力として使用します。フォルダ名にスペースが含まれている場合を除き、すべて問題ありません。この場合、エントリを引用符で囲む必要があります。たとえば、「Inbox」は大丈夫です。 「私の受信トレイ」は「私の受信トレイ」として読む必要があります。
#!/bin/sh
# Delete all duplicate messages in all folders of said account.
# Note that we connect through SSL (-x) to the default port.
read -p "Server: " SERVER
read -p "Username: " USER
read -s -p "Password: " PASS
echo
echo ...........
echo FOLDER LIST
echo ...........
echo
# Next line generates list for display only
/tmp/IMAPdedup-master/imapdedup.py -s $SERVER -x -u $USER -w $PASS -l
# Next line generates list to be used by the do line - this is the entries that need
to have each line in quotations
for folder in `/tmp/IMAPdedup-master/imapdedup.py -s $SERVER -x -u $USER -w $PASS -l`;
do /tmp/IMAPdedup-master/imapdedup.py -s $SERVER -x -u $USER -w $PASS $folder
done
答え1
名前を引用する必要はありません。変わりやすい引用してください。特にスクリプトが機能するには、for folder in ...
ループを次のように置き換える必要があります。
/tmp/IMAPdedup-master/imapdedup.py -s "$SERVER" -x -u "$USER" -w "$PASS" -l |
while IFS= read -r folder; do
/tmp/IMAPdedup-master/imapdedup.py -s "$SERVER" -x -u "$USER" -w "$PASS" "$folder"
done
理由を理解するには、次の記事をお読みください。