Как я ожидаю 'эхо-e “? \c”'?

[1133583] Проверьте совместимость Linux. Введите:[12170]и повторно запустите dropbox....[1133586].
2
23.08.2018, 23:05
2 ответа

В Echo -e «? \ C» , часть \ C - это не то, что напечатано, это директива к команде Echo Чтобы не распечатать новую строку после прохождения строки в качестве аргументации. Поэтому в ожидании, вам нужно ожидать строку «?» (вопросительный знак, пространство). Поскольку аргумент ожидается, что команда является шаблоном, где ? - это подстановочный знак, вам нужно интерпретировать вопросительный знак буквально:

expect -ex "? "
send "1\r"

¹ Некоторые другие реализации ] Echo , например, встроенный Bash, используйте синтаксис echo -n "?" для этого.

1
27.01.2020, 22:21

Вы почти у цели. Рассмотрите возможность использования встроенного чтения (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

0
27.01.2020, 22:21

Теги

Похожие вопросы