假设我有这个脚本:
#!/bin/bash function cpp-lang { yum install "Development Tools" } function updatesys { yum -y update yum -y upgrade } whiptail --checklist "test" 5 40 5\ Update "Update the system" on \ C++ "Install C++" off 2>results while read choice do case $choice in Update )updatesys ;; C++)cpp-lang ;; *) ;; esac done < results
当我运行它时,它退出,我应该从函数中返回一些东西吗?
以上面的脚本为例,我应该
sudo
在每次调用时运行yum install
还是做得sudo ./script.sh
足够了?
答案1
基本上(第二个问题当然是关于sudo
应该最有效地使用方式),这是一个判断问题:
- 在脚本中,有 3 个调用
yum
。如果脚本在开始时测试它是否运行为root
并使用 sudo 来运行自身,这将生成一个更简单的脚本。 - 另一方面,有些人可能会评论说,专门作为
root
使得测试交互部分变得不太安全(如果您继续开发和扩展脚本,包括直接指定包名称)。我自己的倾向是提供一个命令行选项来让脚本经测试,并仅显示(或记录)将运行的相应命令。
例如:
- 如果
whiptail
不安装会发生什么? - 如果
$choice
不是一个词,在case
声明中引用它可能会有所帮助。 - 如果 yum 报告错误(用户是否看到该错误,或者
whiptail
稍后是否有其他调用),会发生什么?