Команда чтения не ждет ввода
У меня есть проблема с выполнением простого script в bash. script выглядит следующим образом:
#! /bin/sh
read -p 'press [ENTER] to continue deleting line'
sudo sed -ie '$d' /home/hpccuser/.profile
и когда я выполняю script с. /script, вывод выглядит следующим образом:
press [ENTER] to continue deleting line./script: 3: read: arg count
[sudo] password for user
Я запускаю команду чтения непосредственно в терминале (копирование и вставка из script в терминал), и она работает нормально; он ждет нажатия ENTER (как пауза).
Ответы
Ответ 1
Поскольку ваш script начинается с #!/bin/sh
, а не #!/bin/bash
, вам не гарантируется наличие доступных bash расширений (например, read -p
) и может основываться только на стандартно-совместимых функциях.
См. соответствующий документ стандартов для списка функций, гарантированных присутствием в read
.
В этом случае вам, вероятно, понадобятся две строки: одна делает печать, а другая делает чтение:
printf 'press [ENTER] to continue deleting...'
read _
Ответ 2
Вы можете сделать это с помощью команды echo!:
echo "press [ENTER] to continue deleting line"
read continue
Ответ 3
Кажется, я опаздываю на вечеринку, но echo -n "Your prompt" && sed 1q
делает трюк с POSIX-совместимой оболочкой. Это печатает подсказку и получает строку из STDIN.
В качестве альтернативы, вы можете расширить этот ввод в переменную:
echo -n "Your prompt"
YOUR_VAR=$(sed 1q)
Ответ 4
read -p " Ici mon texte " continue
он работает на raspbian