Cómo get una list para ingresar entre comillas

en primer lugar, soy un n00b total con secuencias de commands, así que, por favor, perdone cualquier terminología incorrecta.

Tengo un script simple que ejecuta un script de python (utilizado para deduplicar correos electrónicos a través de IMAP) después de que un usuario ha ingresado un nombre de server, nombre de usuario y contraseña. La primera parte obtiene una list de carpetas que la segunda parte usa como inputs, todo bien, a less que el nombre de una carpeta tenga espacio, en cuyo punto la input debe estar entre comillas. Como ejemplo, la Bandeja de input está bien, mientras que Mi Bandeja de input debe leerse como "Mi bandeja de input"

#!/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 

No necesita los nombres para ser citados, necesita las variables para ser cotizadas. Específicamente, para hacer que su script funcione, debe replace la for folder in ... loop con:

 /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 

Le sugiero que lea las siguientes publicaciones para comprender por qué:

  • ¿Por qué mi script de shell se ahoga en espacios en blanco u otros caracteres especiales?
  • Leer líneas de un file con bash: por vs. mientras
  • ¿Cómo puedo leer línea por línea de una variable en bash?