Как мне прочитать значение из пользовательского ввода в переменную

В ksh, как мне предложить пользователю ввести значение и загрузить это значение в переменную в скрипте?

командная строка

echo Please enter your name: 

внутри сценария

$myName = ?

person Justin    schedule 23.07.2011    source источник


Ответы (3)


Вы хотите прочитать:

echo Please enter your name:
read name
echo $name

Дополнительную информацию см. в разделе read(1).

person Marcus Borkenhagen    schedule 23.07.2011

Вы можете сделать это в одной строке, например:

read -p "Please enter your name:" myName

Чтобы использовать переменную в скрипте

echo "The name you inputed is: $myName"
echo $myName
person thebunnyrules    schedule 15.02.2016
comment
это хорошо работает на cygwin, но не на ksh на AIX 7.1 - принятый ответ от Маркуса работает на обоих - person Straff; 21.03.2016
comment
В вопросе есть тег linux, поэтому я предполагаю, что ОП хочет получить ответ Linux. AIX, проприетарная ветвь Unix, разработанная IBM, не является частью Linux. Насколько я знаю, это работало во всех ветках Linux, с которыми я работал, и у него есть преимущество форматирования, которого нет у первого ответа (поскольку использование эха, за которым следует оператор чтения, заставляет использовать ввод в новой строке, тогда как читать -p нет). - person thebunnyrules; 24.03.2016
comment
ПРИМЕЧАНИЕ. -p не соответствует POSIX. - person go2null; 28.03.2018
comment
ksh не поддерживает read -p (точнее, опция -p для read делает что-то другое в ksh). Этот вопрос явно помечен тегом ksh и усилен в тексте вопроса, но вы все же предоставили ответ Bash. - person tripleee; 04.06.2021

ksh позволяет указать подсказку как часть команды read, используя следующий синтаксис:

read myName?"Please provide your name: "
person tripleee    schedule 04.06.2021