Intereting Posts
Разрешение отклонено при получении файла md5sum с помощью сценария оболочки? Удалить строки из файла в зависимости от строк, найденных в другом файле Рекурсивная группировка символических ссылок по исходному файлу меньше команда с трубой Как я могу загрузить ubuntu с внешнего жесткого диска, который подключен к малине Pi Не удается установить пакет с помощью sudo apt-get install помощь для создания сценария оболочки для печати буднего дня и выходных Сделать awk использовать bash с помощью команды system () Отключить звуковой сигнал в lightdm Можете ли вы переключаться между окнами в приложении в Openbox? Загрузите модуль NVIDIA для X и загрузите модуль нумерации для фреймбуфера: автоматически обработка родительского и дочернего сигналов bash Файловая система размонтирована после выходных Как смонтировать Apple Time Capsule во FreeBSD (FreeNAS) в качестве общего ресурса smbfs? OpenSSH: Предотвращение всплытия на SSH_ORIGINAL_COMMAND

Как получить список для ввода в кавычки

во-первых, я полный n00b со сценарием, поэтому, пожалуйста, простите любую неправильную терминологию.

У меня есть простой скрипт, который запускает скрипт python (используемый для дедупликации электронной почты через IMAP) после того, как пользователь ввел имя сервера, имя пользователя и пароль. Первая часть его получает список папок, которые вторая часть использует в качестве входных данных – все отлично, если только имя папки не содержит пробела, в этот момент запись должна быть в кавычках. В качестве примера Входящие в порядке, тогда как «Моя папка» должен быть прочитан как «Мой входящий»,

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

Вам не нужны имена для цитирования, вам нужны переменные, которые должны быть указаны. В частности, чтобы заставить ваш скрипт работать, вам нужно заменить for folder in ... loop:

 /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 

Я предлагаю вам прочитать следующие сообщения, чтобы понять, почему:

  • Почему мой сценарий оболочки задыхается от пробелов или других специальных символов?
  • Чтение строк из файла с помощью bash: for vs. while
  • Как я могу читать строки за строкой из переменной в bash?