Автоматически вводить ввод в командной строке

LibreOffice (не менее 3.6 и 4.1) требует наличия файлов шрифтов .pfb и .afm. Если у вас их нет, LibreOffice не отобразит шрифт в списке шрифтов. Это отличается от большинства других программ, которые довольны только .pfb. Это требование проверено одним из разработчиков LibreOffice в этом сообщении об ошибке LibreOffice Bugzilla.

1
задан 29 August 2013 в 17:05

5 ответов

Некоторые вещи (например, apt-get) принимают специальные флаги для запуска в бесшумном режиме (и принимают значения по умолчанию). В случае apt-get вы просто передаете ему флаг -y. Это действительно зависит от вашего скрипта.

Если вам нужны более сложные вещи, вы можете обернуть свой скрипт в сценарий ожидания. ожидать позволяет читать выходные данные и отправлять их, чтобы вы могли делать довольно сложные вещи, которые другие сценарии не позволяли. Вот один из примеров со страницы Википедии:

# Assume $remote_server, $my_user_id, $my_password, and $my_command were read in earlier
# in the script.
# Open a telnet session to a remote server, and wait for a username prompt.
spawn telnet $remote_server
expect "username:"
# Send the username, and then wait for a password prompt.
send "$my_user_id\r"
expect "password:"
# Send the password, and then wait for a shell prompt.
send "$my_password\r"
expect "%"
# Send the prebuilt command, and then wait for another shell prompt.
send "$my_command\r"
expect "%"
# Capture the results of the command into a variable. This can be displayed, or written to disk.
set results $expect_out(buffer)
# Exit the telnet session, and wait for a special end-of-file character.
send "exit\r"
expect eof
6
ответ дан 24 May 2018 в 18:34

В сценарии оболочки вы также можете использовать следующий трюк spawn, ожидать и отправлять

spawn script.sh
expect "Are you sure you want to continue connecting (yes/no)?"
send "yes"

Однако в приведенном выше сценарии вам нужно будет дать фразу, которую вы ожидаете получить во время выполнения сценарий для большего количества примеров переходите к следующей ссылке

Ожидайте в Bash

5
ответ дан 24 May 2018 в 18:34

Используйте команду yes:

yes | script

Выдержка из справочной страницы:

NAME
       yes - output a string repeatedly until killed

SYNOPSIS
       yes [STRING]...
       yes OPTION

DESCRIPTION
       Repeatedly output a line with all specified STRING(s), or 'y'.
4
ответ дан 24 May 2018 в 18:34

Хорошо, это может быть не очень изящное решение, но если вы напишете свои параметры в отдельном файле, а затем передадите его как вход в скрипт, это тоже сработает. Поэтому, если вы создаете новый файл со всеми вашими параметрами (назовите этот файл как «options.in»), вы можете легко запустить свой скрипт с помощью ./script.sh < options.in и отредактировать / создать различные файлы параметров.

1
ответ дан 24 May 2018 в 18:34

Я писал сценарий bash с диалоговым окном, и это необходимо также автоматически. Я сделал это, и это сработало как прелесть.

# -Wy force signaturewipe (if exists)
echo "y" | sudo lvcreate -W y -n $lvName -L "$lvSize"G /dev/"$svg" >> $nfsUtilLog
0
ответ дан 24 May 2018 в 18:34

Другие вопросы по тегам:

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