Я пытаюсь записать функцию помощника для использования в сценарии удара, чтобы взять переменную строку приглашения и возвратить значение вводы данных пользователем. То, что я имею, сидит и ждет пользователя для ввода значения, не отображая подсказку сначала, которая является озадачивающей. Это также хранит эхо в возвращаемом значении ($foo) и не удерживает чтение значения с изодромной с предварением переменной.
!#/bin/bash
pid=0
promptValue() {
msg="$1"
echo -e "$msg"
read val
pid=$val
}
foo=$(promptValue "type something")
Править: Для любого, кто мог бы хотеть использовать это в будущем для их собственного использования, это - полный (функциональный) сценарий, который разработан для отправки электронного письма (в этом случае к моему сотовому телефону) для сообщения мне, когда длительный процесс завершается. Я уверен, что должен быть лучший способ сделать это, но meh. :-) (я записал им как это, чтобы использоваться в библиотеке функций удара в другом месте.)
#!/bin/bash
promptValue() {
read -p "$1"": " val
echo $val
}
alertme() {
if [ -z "$email" ]; then
email=$(promptValue "Enter email")
fi
if [ -z "$email" ]; then
echo "ERROR: No email set!"
exit 1
fi
if [ -z "$pid" ]; then
pid=$(promptValue "Enter pid")
fi
if [ -z "$pid" ]; then
echo "ERROR: No pid set!"
exit 1
fi
ps -ef | grep $pid | grep -v grep > /dev/null 2>&1
while [ $? eq 0 ]; do
sleep 10
ps -ef | grep $pid | grep -v grep > /dev/null 2>&1
done
echo "Process Complete" | mailx -s "Process Complete" $email
}
alertme
Еще раз спасибо все!