Команда чтения не ждет ввода

У меня есть проблема с выполнением простого 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