繁体   English   中英

apt-get错误杀死了我的bash函数

[英]apt-get error kills my bash function

我正在尝试为.bashrc写一个简单的函数,以简化我遇到的一个常见问题:

$ sudo apt-get install nltk
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package nltk
$ apt-cache search nltk
python-nltk - Python libraries for natural language processing
$ sudo apt-get install python-nltk

所以我这样写:

function sagi(){
    sudo apt-get install $1 || apt-cache search $1
}

但是无论我做什么,在apt-get install部分运行并由于找不到所需的软件包而出错后,该功能完全退出。 我什至尝试这样做:

function sagi(){
    sudo apt-get install $1
    echo $1
}

同样,失败的apt-get运行之后什么也没有。 奇怪的是,当我运行时:

$ sudo apt-get install nltk || apt-cache search nltk

(在bash提示符下)一切正常。 我究竟做错了什么?


编辑:该函数在我的.bashrc文件的末尾,并在上方完整显示。 我检查了一下,而我的.bashrc在任何地方都没有使用set (我最初怀疑set -e可能是罪魁祸首)。 也没有陷阱,并且$的错误代码是? 是100。

这实际上不是解决方案,而是改进建议。

function sagi() {
  sudo apt-get -qq --dry-run install $1
  if [ $? == 100 ]; then
    sudo apt-cache search $1
  else
    sudo apt-get install $1
  fi
}

这将为您提供一种更清洁,更安全的方式来做您想要的事情。 首先,它先执行试运行来检查该软件包是否在存储库中。 之后,它检查错误代码是否为100(由于未找到软件包而失败),并调用高速缓存搜索(如果是),否则它将仅安装软件包。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM