Linux 如何根据wget的状态进行分支?

Linux 如何根据wget的状态进行分支?,linux,bash,operators,wget,rpm,Linux,Bash,Operators,Wget,Rpm,我正忙于编译一个脚本,通过向PuTTy窗口发送大量命令,在Linux上自动安装MySQL 我遇到的问题是,“一个存储库”的下载链接不断变化,如果链接不可访问,我需要弹出一个提示 以下是我目前得到的信息: wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm && echo "WE GOT IT" || echo "URL Invalid, Please specify new

我正忙于编译一个脚本,通过向PuTTy窗口发送大量命令,在Linux上自动安装MySQL

我遇到的问题是,“一个存储库”的下载链接不断变化,如果链接不可访问,我需要弹出一个提示

以下是我目前得到的信息:

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm 
&& echo "WE GOT IT" || echo "URL Invalid, Please specify new URL:" 
&& read newurl && wget $newurl
但在运行时,无论文件是否存在,结果都是:1。第一个文件将被下载,它将显示echo消息,然后它将等待readnewurl命令进行用户输入,然后wget该新变量

如何使“| |”后的整个后半部分仅在第一个url不起作用时出现?

重构代码 你的代码太扭曲了。虽然可以使用大括号表达式对其进行改进,但最好将逻辑重构为if/else语句。作为一个(未经测试的)示例:


哎哟你的密码让我眼冒金星你在哪工作?它可能还有一些
if
else
。顺便问一下,这是什么语言编码的?PHP?@CodeGnome-哈哈,好吧。。。。谢谢它只是下载文件和echo或echo,等待输入并下载新文件。(应该是这样的)哦,我明白了。我想@CodeGnome下面的答案逻辑应该会有所帮助。哇。。。虽然我没有完全使用这个例子。你所说的大括号表达式是有道理的,添加括号后,一切都正常!最终代码:
wgethttp://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm ||(echo“URL无效,请指定新URL:&&read newurl&&wget$newurl)
@Skowt我很高兴这有帮助。然而,请记住,可读性往往比简洁性更重要。在许多情况下,从现在起六个月后,if/else分支比一系列
&&
运算符更具可读性。您的里程数可能会有所不同。@Skowt:不要使用
(cmd)
——这样会创建子shell,这可能会产生意外的效果。相反,使用
{cmd;}
或更好的
if-then-else-fi
。您应该从中吸取的教训之一是可读性很重要,不仅仅是六个月后,而且在编写代码时也是如此。出现最初的问题是因为您在编写代码时不理解代码的功能,如果您不重视简洁性而不是清晰性,那么就不会出现这种情况。不幸的是,这不起作用,因为我有一个命令列表,也必须在此之后运行(所有命令都在屏幕中),因此退出不是一个选项。谢谢你的尝试,竖起大拇指
if wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
then
    echo 'We got it!'
else
    read -p 'URL invalid. Please specify new URL: '
    wget "$REPLY"
fi
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm 
&& echo "WE GOT IT" && exit || echo "URL Invalid, Please specify new URL:" 
&& read newurl && wget $newurl


Add "exit" on left side of ||  with && operator ,,if the left argument is true then it will download that file and exit from terminal otherwise prompt for new url