команда read не ждет ввода

у меня проблема с выполнением простого скрипта в bash. Сценарий выглядит так:

#! /bin/sh

read -p 'press  [ENTER]  to continue deleting line'
sudo sed -ie '$d' /home/hpccuser/.profile

и когда я выполнить скрипт ./ script вывод выглядит следующим образом:

press  [ENTER]  to continue deleting line./script: 3: read: arg count
[sudo] password for user

Я запускаю команду read непосредственно в терминале (копировать и вставлять из скрипта в терминал), и она отлично работает; она ждет ввода (так же, как пауза).

3 ответов


потому что ваш скрипт начинается с #!/bin/sh, а не #!/bin/bash, у вас не гарантируется наличие расширений bash (например,read -p), и может полагаться только на стандартам функциональности.

посмотреть соответствующий документ стандартов для списка функций, которые гарантированно присутствуют в read.

в этом случае вам, вероятно, понадобятся две строки, одна из которых будет печатать, а другая-читать:

printf 'press [ENTER] to continue deleting...'
read _

вы можете сделать это с помощью команды echo тоже!:

    echo "press  [ENTER]  to continue deleting line"
    read continue

read -p " Ici mon texte " continue

он работает на raspbian