私が持っている一般的な問題を単純化するために、.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ファイルの最後にあり、上にその全体が示されています。set
確認したところ、.bashrc はどこにも使用されていません。set -e
(私は当初、それが犯人ではないかと疑っていました)。トラップもありません。また、$? からのエラー コードも表示されます。は 100 です。