Como obter uma lista para ser inserida entre aspas

2

em primeiro lugar, sou um n00b total com scripts, portanto, por favor, perdoe qualquer terminologia incorreta.

Eu tenho um script simples que executa um script python (usado para desduplicar e-mails via IMAP) depois que um usuário insere um nome de servidor, nome de usuário & senha. A primeira parte obtém uma lista de pastas que a segunda parte usa como entradas - tudo bem, a menos que o nome da pasta tenha um espaço nela, e nesse ponto a entrada precisa estar entre aspas. Como exemplo, a Caixa de entrada é boa, enquanto a Minha caixa de entrada precisa ser lida como "Minha caixa de entrada"

#!/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
    
por lippyrich 16.05.2016 / 11:55

1 resposta

4

Você não precisa dos nomes para ser citado, você precisa que as variáveis sejam citadas. Especificamente, para fazer seu script funcionar, você precisa substituir o for folder in ... loop por:

/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

Sugiro que leia as seguintes mensagens para entender o motivo:

por 16.05.2016 / 12:22