我目前从外部硬盘驱动器上运行的Archlinux,所以我试图让一个脚本在bash,让我改变视频驱动程序,而无需通过配置文件浏览每次我从另一台计算机的启动时间。Bash:IF和ELSE,比较和逻辑OR门?
我用NVIDIA或暴发户在我的台式电脑,但英特尔当我在我的女朋友的笔记本电脑。因此,我一直在与SED一个bash脚本,将输出电流驱动器被用于一个名为$ VCARD变量,而我想换到一个将是脚本($ 1第一个参数,然后)。
我的问题是,我想使这个安全的,这样我就不会意外地交换了持有NVIDIA,暴发户或英特尔东西,这不是这三根弦的弦。我认为最好的做法是进行一系列if-else比较,如下所示。
if [ "$1" = "$VCARD" ]
then
echo "Already using $VCARD driver."
else
if [ "$1" = "nouveau" or "intel" or "nvidia" ] #This is the line that concerns me.
then
sed -i -e "7s#\(nouveau\|intel\|nvidia\)#$1#" /etc/X11/xorg.conf.d/10-monitor.conf
echo "New driver is now $1."
else
echo "You don't want to put that string there. (try nouveau, intel or nvidia)"
fi
fi
当你想适应中间的逻辑或门时条件是如何工作的?
PD:是的,我使用“#” S作为分隔符的sed命令,我希望这不是任何人的眼中钉。
''||是逻辑或许多其他编程语言 – karakfa
使用带'[]正规'test' ''不适用于'||'和'&&'。为了使用这些,你需要'[['和']]'。在单个方括号内,可以使用'-a'作为AND,'-o'作为OR。 – Filkolev
洋葱头,您的示例直到我为该代码添加了双括号后才适用于我。不过,非常感谢我指出了正确的方向! –