![Bash 脚本 if - else 条件](https://linux22.com/image/89007/Bash%20%E8%84%9A%E6%9C%AC%20if%20-%20else%20%E6%9D%A1%E4%BB%B6%20.png)
我想创建一个 bash 脚本,从互联网下载特定的安装程序,安装它,创建一个启动它的桌面文件,使其自动启动,然后删除安装程序,但有一些我想要的脚本去检查。这些东西是:
安装程序是否存在(如果不存在,则下载它,否则将其设置为可执行)
以前的安装是否存在(如果存在,则设置其卸载程序可执行文件,运行它并删除它留下的所有内容,否则转到下一步)
通过 apt list 查看 gksu 包的状态 | grep gksu(如果已安装,则转到下一步,否则安装它)并且
gksu example.run 的输出(如果有“GNOME_SUDO_PASS”行,则重复 gksu example.run,否则转到下一步)
答案1
条件:安装程序 - ls 。 | grep example.runchmod +x pelda.run else wget download/link/of/example.run
据我理解,上面的内容可以翻译为:
if [ -f example.run ]
then
chmod +x pelda.run
else
wget download/link/of/example.run
fi
[ -f example.run ]
是使用该命令的示例test
。如果名为的文件example.run
存在,则测试命令将返回代码设置为 0(表示 true)。如果没有,它会将返回码设置为 1(表示 false)。
条件:gksu - apt list --已安装 | grep gksu,如果!存在,则 sudo apt install gksu else gksu pelda.run
当我解释上面的内容时,它会翻译为:
if apt list --installed | grep gksu
then
gksu pelda.run
else
sudo apt install gksu
fi
在这里,我们使用的事实是grep
根据是否找到匹配项来设置返回代码。 apt list --installed
返回已安装软件包的列表。如果其输出任何位置包含字符串gksu
,则grep
设置返回码 0(表示 true)并then
执行该子句。如果不存在,else
则执行该子句。