无需等待按 Enter 键即可读取 shell 脚本

无需等待按 Enter 键即可读取 shell 脚本

我正在编写一个小型 bash 脚本,它本质上只会做两件事。同时执行两个更新命令,并列出按键绑定。例如,以同样的方式,作为变量chmod +x也可以工作。using +x我希望的方式是,如果我输入bash filename.sh -Y,我将获得所需的按键绑定,如果我替换-Y-X,我将运行两个更新命令。我该怎么做?

编辑;我忘了提及这一点,但老实说,变量中是否有连字符并不重要。我的帖子标题的意思是,如何使用-Yinbash filename.sh -Y而无需先按 Enter 键?这是我当前正在使用的脚本。

#!/bin/sh

read var

if [ var == upd ]
then 
    sudo pacman -Syyu; yay -Syu
fi

upd当我在运行后按 Enter 键输入时,效果非常好bash filename.sh。我如何获得相同的输入bash filename.sh upd

答案1

您应该使用命令行参数变量$1$2$3$1自动设置为命令行上命令后的第一个单词。$2是第二个词。$3是第三个,等等。您还可以使用变量$#来查看是否有参数,该变量包含命令行上的参数数量。

所以你的脚本将是:

#!/bin/bash

if [ $# -gt 0 ]; then
    var="$1"
else
    read var
fi

if [ "$var" == upd ]; then 
    sudo pacman -Syyu; yay -Syu
fi

注意:您应该始终在任何可能包含空格的变量两边加上引号,特别是当该变量可能来自用户输入时。

相关内容