小编cov*_*wer的帖子

如何强制 bash 脚本等待用户回答?

已经有类似的问题,但我发布这个是因为没有一个答案有效。我正在编写一个 bash 脚本来自动在我的 Arch 系统上安装 pacman 和 AUR 包。这个想法是首先逐行读取包名称的文件(myfile),然后逐字读取并为每个单词执行安装。这适用于吃豆子,但不适用于 AUR Helper (aurman)。aurman 的部分如下所示:

while read line; do
if [[ "$line" =~ \$[[:space:]]aurman[[:space:]]-S[[:space:]][[:alnum:]]* ]]
then
    aurline=$(echo "$line" | awk '{ $1=""; $2=""; $3=""; print}' | sed 's/^ *//')
    for aurpkg in $aurline
    do
       sudo -u "${my_user}" bash << EOF
aurman -S --noconfirm --needed --noedit "$aurpkg"
wait
EOF
    done
fi
done < "$myfile"
Run Code Online (Sandbox Code Playgroud)

使用选项--noconfirm --needed --noedit aurman 不会提示我输入是/否,但对于某些软件包,它会提示我输入一个数字。所以问题是在这种情况下脚本不等待,包没有被安装并且 aurman 产生错误“EOFError: EOF when reading a line”。我试图像这样暂停脚本:

aurman ...
wait
Run Code Online (Sandbox Code Playgroud)

或者像这样:

aurman ... …
Run Code Online (Sandbox Code Playgroud)

linux script bash

3
推荐指数
1
解决办法
1279
查看次数

标签 统计

bash ×1

linux ×1

script ×1