当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 5 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 如何实现脚本判断语句是否满足条件的求助!
帖子发表于 : 2016-09-08 15:09 
头像

注册: 2007-07-14 20:45
帖子: 1123
送出感谢: 59
接收感谢: 30
先看脚本
代码:
#!/bin/sh
echo "特别软件-安装嗅探工具"
sudo apt install ettercap -y      #这行在运行过程中总是出错,系统忽略了这条指令,不进行任何安装。
echo "安装chrome浏览器"
cd /$HOME/文档/linux/
sudo dpkg -i google-chrome-stable_current_amd64.deb
echo "安装远程协助工具"
sudo dpkg -i teamviewer_11.0.57095_i386.deb
echo "end"


上述脚本中,有两个问题。
问题一:
代码:
sudo apt install ettercap -y      #这行在运行过程中总是出错,系统忽略了这条指令,不进行任何安装。
我需要手工到软件中心去安装,这条命令出错在哪里?

问题二:在安装远程协助工具时,实际安装过程中提示要安装依赖组件,如何做到有安装错误提示的时候就自动执行sudo apt-get install -f这条指令?(意思就是一旦出现安装错误提示,就跳转到下一个指令,否则,继续执行。)


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 如何实现脚本判断语句是否满足条件的求助!
帖子发表于 : 2016-09-08 15:38 
头像

注册: 2011-03-20 13:12
帖子: 4521
地址: 山东省寿光县
系统: Debian
送出感谢: 105
接收感谢: 997
九天星 写道:
问题一 这条命令出错在哪里?

Package ettercap is a virtual package provided by:
ettercap-text-only 1:0.8.2-2build1
ettercap-graphical 1:0.8.2-2build1
需指定 ettercap-text-only 或 ettercap-graphical 任选其一

九天星 写道:
问题二 如何做到有安装错误提示的时候就自动执行sudo apt-get install -f这条指令

可用 $? 判断上一条命令返回值。dpkg -i 依赖不满足会返回 2

代码:
sudo dpkg -i teamviewer_11.0.57095_i386.deb
rc=$?; if [[ $rc != 0 ]]; then sudo apt-get -f install; fi


若系统为 16.04 也可使用 apt 安装 deb 文件,可自动处理依赖

代码:
sudo apt install ./teamviewer_11.0.57095_i386.deb


九天星 写道:
cd /$HOME/文档/linux/

此处最左侧斜线不必要


_________________
Debian 中文论坛 - forums.debiancn.org
欢迎所有 Debian GNU/Linux 用户



_________________
评价: 3.7% 九天星
 
页首
 用户资料  
 
3 楼 
 文章标题 : Re: 如何实现脚本判断语句是否满足条件的求助!
帖子发表于 : 2016-09-08 17:12 
头像

注册: 2007-07-14 20:45
帖子: 1123
送出感谢: 59
接收感谢: 30
vickycq 写道:
九天星 写道:
问题一 这条命令出错在哪里?

Package ettercap is a virtual package provided by:
ettercap-text-only 1:0.8.2-2build1
ettercap-graphical 1:0.8.2-2build1
需指定 ettercap-text-only 或 ettercap-graphical 任选其一

我明白了,是说这个程序有两个版本,一个是文本界面,一个是图形界面,而我在安装的时候没有选择到底安装哪个,所以造成系统无法识别。


九天星 写道:
问题二 如何做到有安装错误提示的时候就自动执行sudo apt-get install -f这条指令

可用 $? 判断上一条命令返回值。dpkg -i 依赖不满足会返回 2

代码:
sudo dpkg -i teamviewer_11.0.57095_i386.deb
rc=$?;        #是不是我要找到安装teamviewer时候出现的报错唯一提示,然后在“?”号那里填入?     rc又是什么意思呢?
if [[ $rc != 0 ]];     #这句话的意思是不是:如果rc不等于0?
then sudo apt-get -f install;       #就运行sudo apt-get -f install
fi                                               #判断语句结束




九天星 写道:
cd /$HOME/文档/linux/

此处最左侧斜线不必要


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 如何实现脚本判断语句是否满足条件的求助!
帖子发表于 : 2016-09-08 17:25 
头像

注册: 2011-03-20 13:12
帖子: 4521
地址: 山东省寿光县
系统: Debian
送出感谢: 105
接收感谢: 997
九天星 写道:
是说这个程序有两个版本,一个是文本界面,一个是图形界面,而我在安装的时候没有选择到底安装哪个,所以造成系统无法识别。

是的,此种虚包(Virtual Package)可由功能类似的一众软件“提供”,其本身在软件源中并不存在。类似的例子还有 mail-transport-agent

九天星 写道:
rc=$?; #是不是我要找到安装teamviewer时候出现的报错唯一提示,然后在“?”号那里填入?

不是,$? 用于获取上一个命令的返回值

代码:
$ ll test
-rwxr-xr-x 1 vicky vicky 261 Aug  3 09:35 test
$ echo $?
0
$ ll test-2
ls: cannot access 'test-2': No such file or directory
$ echo $?
2
$ echo $?
0
$ aaa
-bash: aaa: command not found
$ echo $?
127
$ echo $?
0


九天星 写道:
rc又是什么意思呢?

是变量名,可用符合要求的任意字符串

九天星 写道:
#这句话的意思是不是:如果rc不等于0?

是的,因一般成功返回零,失败返回非零


_________________
Debian 中文论坛 - forums.debiancn.org
欢迎所有 Debian GNU/Linux 用户



_________________
评价: 3.7% 九天星
 
页首
 用户资料  
 
5 楼 
 文章标题 : Re: 如何实现脚本判断语句是否满足条件的求助!
帖子发表于 : 2016-09-08 18:27 
头像

注册: 2007-07-14 20:45
帖子: 1123
送出感谢: 59
接收感谢: 30
这么看来,你的回答直接解决了我的问题,不用再进行任何修改,我只用照搬就可以了。
在ubuntu14.04LTS下这个脚本就应该是这样

代码:
#!/bin/sh
echo "特别软件-安装嗅探工具"
sudo apt install ettercap-graphical -y
echo "安装chrome浏览器"
cd /$HOME/文档/linux/
sudo dpkg -i google-chrome-stable_current_amd64.deb
echo "安装远程协助工具"
sudo dpkg -i teamviewer_11.0.57095_i386.deb
rc=$?;
if [[ $rc != 0 ]];
then sudo apt-get -f install;
fi
sudo apt-get install hexchat
echo "end"


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 5 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译