Понимание встроенного чтения

Я пытаюсь написать простой сценарий оболочки для запуска команд с urxvt. Идея такова (не полный сценарий, просто идея):

PRMPT="read -r CMD" urxvt -g 55x6-20+20 -e $PRMPT CMD 

С этим скриптом есть две проблемы. Первый заключается в том, что read не подходит для такого рода задач, поскольку оно игнорирует параметры команды (если я пишу echo hello read, присваивается echo CMD и игнорирует hello ). Второй, который больше всего меня озадачивает, заключается в том, что urxvt -e немедленно выходит и не ждет моего ввода. Я полагаю, что это связано с тем, что read является встроенной функцией, но, например, urxvt -e echo hello отлично работает.

Есть ли у кого-нибудь предложения по изменению сценария?

2 Solutions collect form web for “Понимание встроенного чтения”

какова ваша цель? эхо исполняется ( /bin/echo ), чтение встроено. -e означает выполнение исполняемого файла. Если вы хотите использовать встроенную функцию вашей оболочки (bash?), Используйте urxvt -e /bin/bash -c read -r CMD

Я не знаю urxvt , но могу помочь вам read .

Когда вы read так:

 read -r CMD 

Он назначает первый токен, который он читает переменной CMD . Если вы хотите прочитать больше токенов, вы можете указать более переменные явно.

 read -r CMD ARGS1 ARG2 ARG3 

В этом случае, если есть больше токенов, чем переменные, которым они должны быть назначены, последняя переменная принимает то, что интуитивно предполагается, плюс остальные прочитанные токены.

Вы также можете использовать массив, добавив параметр -a .

 read -ra CMD 

Чтобы расширить массив, выполните следующие действия:

 "${CMD[@]}" 

Иллюстрация.

 $ read -a cmd echo ok $ ${cmd[@]} ok 
  • получить имя нового каталога, созданного из команды tar
  • Сценарий оболочки: список фильтров .pdf-файлов, чтобы исключить файлы с исходным файлом .tex
  • эхо в файл с другим пользовательским разрешением
  • Как отправить почту, когда кто-то удаленный подключается к моему серверу
  • Как имитировать трубку?
  • Сценарий Bash работает только в режиме отладки
  • Сценарий загрузки Debian autossh не работает должным образом
  • Как вычесть строки, наоборот, только если больше, чем предыдущая строка
  • Как заставить tcsh не вставлять пробелы в команду, которая охватывает несколько строк
  • Как передать вывод скрипта команде ls без разделения данных?
  • выйти из сценария оболочки
  • Interesting Posts

    Самый эффективный способ развертывания ОС на нескольких компьютерах?

    Как установить (найти) atime в секундах?

    Нажмите на массив с помощью find exec

    Можно ли сделать локальную потерю эффективной с разреженными файлами?

    Таблица разделов повреждена после использования TestDisk

    Удалить столбец из CSV

    bash prompt – длинный командный круг обратно в ту же строку после добавления цвета

    Не удается экспортировать пользователя samba с помощью pdbedit. Как я могу сделать резервную копию своих пользователей самбы?

    Настроить cshrc для установки путей для определенных каналов

    Как устранить проблему с исключительными разрешениями – Rasp Pi, HFS +, SMB, Mac

    Обновление скорости обмена данными Berkeley DB в ОС Centos

    Bash: исходные файлы без полного пути?

    выйти из сценария оболочки из подоболочки

    Qubes OS не загружается с Live USB Drive

    команда sed для удаления переменной количества строк

    Linux и Unix - лучшая ОС в мире.