Можно сначала добавить другой столбец с количеством символов с awk
, сделать sort
и затем полоса добавила столбец:
awk '{printf "%d %s\n", length($1), $0}' file.txt | sort -n -k1,1 | sed -E -e 's/^[0-9]+ //'
Q1: цель ожидает, должен автоматизировать интерактивные программы. Чтобы запустить программу и взаимодействовать с ним, Вы используете spawn
команда.
Q2: последние ожидают после того, как канал будет ожидать двоичным файлом. Если не, учитывая аргумент файла, это читает свой stdin, чтобы заставить сценарий выполняться.
Q3: автор хотел, чтобы механизм автоматически передал значение, когда сценарий запрашивает один.Именно.
Я сильно подозреваю (в зависимости от того, что myscript.sh делает), что Вы не должны ожидать вообще:
echo "myval" | myscript.sh arg1 arg2
Q1: я не expect
пользователь, но это кажется ясным это spawn
запускает скрипт в фоновом режиме и делает это управляемым expect
, вместо того, чтобы просто работать без любой интерактивности.
Q2: строка передается как сценарий expect
. Я принимаю, как большинство языков сценариев, это эквивалентно сохранению строки в файл и выполнение expect file
.
Q3: Это похоже на тест для наблюдения этого myscript.sh
, когда выполнено, печатает сообщение и отвечает пользователю, предоставленному значению путем выхода, ничего не печатая.
Другими словами, я ожидаю, что необходимо смочь запустить этот скрипт с тем же результатом:
#!/usr/bin/expect
spawn myscript.sh arg1 arg2 # Run `myscript.sh arg1 arg2` and return control to `expect`
expect "Please enter your value: " # Succeeds if the script prints this value
send "myval\r" # Simulate entering this value
expect eof # Succeeds if the script ends without printing anything