引用符で囲まれたリストを取得する方法

引用符で囲まれたリストを取得する方法

ユーザーがサーバー名、ユーザー名、およびパスワードを入力した後、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

理由を理解するには、次の記事をお読みください。

関連情報