Bash脚本,if语句[关闭]

Posted

技术标签:

【中文标题】Bash脚本,if语句[关闭]【英文标题】:Bash script, if statement [closed] 【发布时间】:2014-05-26 05:06:15 【问题描述】:

我正在练习脚本,但我不知道我的脚本有什么问题。这就是我现在所拥有的。

#!/bin/bash

read -p "Continue? y/n" y

y=0

if (y eq- 0 )then;
    y=1
fi
if (y eq- 0 )then;
    read-p "Thank you for running this script"
    exit
else
    read-p "You will now exit"
    exit
fi

任何建议或想法都会有所帮助。

【问题讨论】:

问题是什么?! 读取一个变量,然后将0分配给same变量。一些真的看起来很奇怪的ifs。 read-p(!) 作为某种echoexit 后跟 else。我推荐一个 Bash 教程。 (如果您尝试使用的是 Bash。) 您的问题需要修改或澄清。要知道你的脚本有什么问题,我们需要知道:1. 你已经做了什么 2. 你想做什么 3. 你具体在哪个部分苦苦挣扎。这将提高您的答案质量,并在将来让其他人清楚。 通常我建议你先阅读手册页: man read ,但是如果你这样做是为了 read 这样做, man read ,你会发现 -p 不是你可以使用的标志( aka -p 不是您可以通过阅读的选项)。但是,目前该手册页不正确,我刚刚通过电子邮件向作者发送了电子邮件以解决该问题。 @tux 有什么不清楚的答案;你还有什么期待?你有工作的例子...... 【参考方案1】:

一些注意事项:

要在 bash 中使用变量,请在前面添加 $

;如果放在同一行,则在 then 之前

#!/bin/bash -x

read -p "Continue? y/n" y
#y=0
# Why set y to 0 when you read it ?
# Why check y equal to 0 if you just set it ?
#if [[ $y -eq 0 ]] ; then
#  y=1
#fi  

if [[ "$y" = "y" ]]; then
   read -p "Thank you for running this script"
   exit
else
   read -p "You will now exit"
   exit
fi

您还可以使用正则表达式来检查大小写的“y”:

if [[ $y =~ [yY] ]]; then
   read -p "Thank you for running this script"
fi

【讨论】:

【参考方案2】:
if ($y eq- 0 ) then;

read -p "You will now exit"

对空格要非常小心,它们不仅是为了可读性,有时它们也是有原因的!

注意 ; (分号)。 它只是为了避免将以下文本放在新行上。对我来说,它在命令行操作中很有用,但我看不出有理由在脚本中使用它。只需转到下一行。你见过有人用一行写满分号的脚本吗?不,它不可读。那为什么一定要和IF一起使用呢?

【讨论】:

以上是关于Bash脚本,if语句[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在 Bash 中检查 sudo(带有 if 语句的脚本)

bash脚本

在 bash 脚本的 if 语句中使用 traceroute

在 if elif else 语句中具有逻辑与和 ors 的 Bash 脚本

在简单的 bash 脚本中使用 find 命令和 if 语句

bash脚本中 if 语句 和 for 语句的用法