Я пытаюсь установить звездолет с помощью одной команды, но когда я запускаю следующую, она запрашивает ввод с клавиатуры. Тогда как я могу передать его «y» автоматически, не печатая? Я считаю, что команда yes
может помочь, но не знаю, как мне ее использовать в этом случае.
$ curl -sS https://starship.rs/install.sh | sh
Configuration
> Bin directory: /usr/local/bin
> Platform: unknown-linux-musl
> Arch: aarch64
> Tarball URL: https://github.com/starship/starship/releases/latest/download/starship-aarch64-unknown-linux-musl.tar.gz
? Install Starship latest to /usr/local/bin? [y/N]
yes y | curl -sS https://starship.rs/install.sh | sh
помогает?
@MurtazaHussain Могу я спросить, куда мне его положить?
@DavidRanieri Боюсь, что нет, я все еще просил ввода.
Вы не можете, потому что вы уже перенаправляете curl
на sh
.
Проверка скрипта показывает, что вы можете запустить его с помощью -y
, чтобы избежать интерактивных подсказок, поэтому, вероятно, просто сделайте это.
curl -sS https://starship.rs/install.sh | sh -s -- -y
Параметр -s
позволяет передавать параметры сценарию из командной строки sh
, а затем --
требуется для отделения параметров sh
от параметров, которые вы передаете сценарию.
В общем случае, если скрипт был написан так, что он безоговорочно требует интерактивного ввода-вывода, вам действительно нужно загрузить его в файл, а затем запустить этот файл с перенаправлением.
#!/bin/bash
dest=$(mktemp -t) || exit
trap 'rm -f "$dest"' ERR EXIT HUP INT TERM
curl -sS https://starship.rs/install.sh >"$dest"
yes | sh "$dest"
Использование ERR
и EXIT
с trap
является расширением Bash. Если вы неофициально запускаете это вручную, генерация временного файла по сценарию и связанная с ним ловушка, вероятно, могут быть заменены чем-то более специальным.
'-y', должно работать