Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 外壳供应器的流浪抑制非零出口状态_Shell_Vagrant_Apt Get - Fatal编程技术网

Shell 外壳供应器的流浪抑制非零出口状态

Shell 外壳供应器的流浪抑制非零出口状态,shell,vagrant,apt-get,Shell,Vagrant,Apt Get,我在《流浪汉》里有一个剧本供应员。我的盒子是64位精确的。我的脚本的相关行如下所示: sudo bash -c 'echo "deb https://oss.oracle.com/debian/ unstable main non-free" >/etc/apt/sources.list.d/oracle.list' wget -q https://oss.oracle.com/el4/RPM-GPG-KEY-oracle -O- | sudo apt-key add - sudo ap

我在《流浪汉》里有一个剧本供应员。我的盒子是64位精确的。我的脚本的相关行如下所示:

sudo bash -c 'echo "deb https://oss.oracle.com/debian/ unstable main non-free" >/etc/apt/sources.list.d/oracle.list'
wget -q https://oss.oracle.com/el4/RPM-GPG-KEY-oracle -O- | sudo apt-key add -

sudo apt-get update -qq
错误代码为:

W: GPG error: https://oss.oracle.com unstable Release: The following signatures were invalid: KEYEXPIRED 1378511808 KEYEXPIRED 1378511808 KEYEXPIRED 1378511808
W: Failed to fetch https://oss.oracle.com/debian/dists/unstable/main/binary-amd64/Packages  The requested URL returned error: 404

W: Failed to fetch https://oss.oracle.com/debian/dists/unstable/non-free/binary-amd64/Packages  The requested URL returned error: 404

E: Some index files failed to download. They have been ignored, or old ones used instead.
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!
问题是,尽管我知道回购协议的密钥已过期,并且不适用于64位体系结构(仅32位)。不过我还是想从中安装相关的软件包(可以使用:
:i386
)。 但是在更新过程中,由于非退出状态,vagrant停止并不再继续我的脚本


有没有办法(无论是vagrant还是在
apt get
端)让vagrant开心并继续执行我的脚本?

您可以使用
强制将错误状态设置为零;正确

sudo sh -c "apt-get update -qq ; true"

比Igor的建议稍微简单一点的方法是将其设置为布尔语句:

apt-get update -qq || true

这样可以避免调用不必要的子shell。

谢谢您的建议。仍然必须使用
|
而不是
。查看更新的答案。因为使用
vagrant将检测到非零状态=>将再次失败。然而,使用
|
vagrant必须一次性执行所有命令=>没有机会检测到命令的退出状态,而不是在链的末端。这就是为什么。请注意,如果你保持现在的答案不变。不正确。@PeterButkovic:你能检查一下吗:
sudo sh-c'apt get update-qq;真“
?关键是,您可以使用shell的非零退出代码覆盖命令;瓦格兰特没有发现任何可疑之处。使用
| true
是错误的,因为您在管道之前丢失了命令的标准输出。@PeterButkovic:谢谢您,Peter@本约翰逊:有几种方法:
ver>nul
cmd/c“退出/b0”
set“errorlevel=“
”。试试看