我试图通过一个命令安装星舰,但是当我运行下面的命令时,它会请求键输入。那我怎么能不打字就自动传递"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] 发布于 2022-11-11 08:21:58
不能,因为您已经在将curl重定向到sh。
检查脚本可以发现您可以使用-y运行它以避免交互提示,所以可能只需这样做。
curl -sS https://starship.rs/install.sh | sh -s -- -y-s选项允许您从sh命令行将选项传递给脚本,然后需要--将sh选项从传递给脚本的选项中分离出来。
在一般情况下,如果脚本是无条件地要求交互式I/O的,则确实需要将其下载到文件中,然后重定向运行该文件。
#!/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扩展。如果您通过手工非正式地运行这一点,那么临时文件的脚本生成和相关的陷阱可能会被一些更特殊的东西所取代。
https://stackoverflow.com/questions/74399476
复制相似问题