В Echo -e «? \ C»
, часть \ C
- это не то, что напечатано, это директива к команде Echo
Чтобы не распечатать новую строку после прохождения строки в качестве аргументации. Поэтому в ожидании, вам нужно ожидать строку «?»
(вопросительный знак, пространство). Поскольку аргумент ожидается, что команда
является шаблоном, где ?
- это подстановочный знак, вам нужно интерпретировать вопросительный знак буквально:
expect -ex "? "
send "1\r"
¹ Некоторые другие реализации ] Echo
, например, встроенный Bash, используйте синтаксис echo -n "?"
для этого.
Вы почти у цели. Рассмотрите возможность использования встроенного чтения
(From TDLP: Catching User Input ):
cat leaptest.sh
#!/bin/bash
# This script will test if you have given a leap year or not.
echo "Type the year that you want to check (4 digits), followed by [ENTER]:"
read year
if (( ("$year" % 400) == "0" )) || (( ("$year" % 4 == "0") && ("$year" % 100 !=
"0") )); then
echo "$year is a leap year."
else
echo "This is not a leap year."
fi
Уведомление Строка 6 . Переменная year создается BASH "на лету" для хранения вывода для оператора echo.
cat friends.sh
#!/bin/bash
# This is a program that keeps your address book up to date.
friends="/var/tmp/michel/friends"
echo "Hello, "$USER". This script will register you in Michel's friends database."
echo -n "Enter your name and press [ENTER]: "
read name
echo -n "Enter your gender and press [ENTER]: "
read -n 1 gender
echo
grep -i "$name" "$friends"
if [ $? == 0 ]; then
echo "You are already registered, quitting."
exit 1
elif [ "$gender" == "m" ]; then
echo "You are added to Michel's friends list."
exit 1
else
echo -n "How old are you? "
read age
if [ $age -lt 25 ]; then
echo -n "Which colour of hair do you have? "
read colour
echo "$name $age $colour" >> "$friends"
echo "You are added to Michel's friends list. Thank you so much!"
else
echo "You are added to Michel's friends list."
exit 1
fi
fi
В вашем конкретном случае вы должны заменить Строку 5 списком параметров из сценария и, начиная со строки 17, изменить if для соответствия параметру, который вы передали как ANS
. Если параметр соответствует , если
, выполните сценарий, как в sh myscript.sh --option ANS