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变量。一些真的看起来很奇怪的if
s。 read-p
(!) 作为某种echo
。 exit
后跟 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 脚本的 if 语句中使用 traceroute
在 if elif else 语句中具有逻辑与和 ors 的 Bash 脚本