bash 的if 语句,for 语句

原创 2012年03月27日 14:19:36
#!/bin/bash
if [ -f tar.sh ]
        echo "tar.sh exist";
else
        echo "tar.sh not exist";

fi

执行出现错误:

./1.sh: line 4: syntax error near unexpected token `else'
./1.sh: line 4: `else'

原来是缺少了then 语句。 bash 跟 c 语言还是不太像的。 是不是有点象basic?

正确的写法是加上then , 如下:

#!/bin/bash
if [ -f tar.sh ]
then
        echo "tar.sh exist";
else
        echo "tar.sh not exist";

fi

执行,正确。


在控制台下直接敲入为: if [ -f tar.sh ]; then echo "tar.sh exist"; else echo "tar.sh not exist"; fi

语句之间用分号分割。

----------------------------------------
字符串变量的比较,= == 都可以, 字符串变量最好加上双引号
否则,可能出现 too many arguments
----------------------------------------
[root ~]$ a="abc def"
[root ~]$ echo $a
abc def
[root ~]$ if [ $a = "abc def" ] ;then echo yes;else echo no;fi
bash:root [: too many arguments
no
[root ~]$ if [ "$a" = "abc def" ] ;then echo yes;else echo no;fi
yes
----------------------------------------
if 语句(测试语句)的简单写法, 实际上是test 语句/ [ ] 语句
----------------------------------------
[root ~]$ [ "$a" = "abc def" ] && echo yes || echo no
yes
[root ~]$ [ "$a" = "abc defd" ] && echo yes || echo no
no

~                                                                          


除了 if then... else .... fi 语句

还有 for do...done 语句, while do ... done 语句等


bash for 循环举例:

for var in ... 方式和 c表达式方式

for i in 1 2 3 4 5; do echo $i; done

for ((i=0; i<10; i++)); do echo $i; done  // c 风格的条件语句

版权声明:本文为博主原创文章,未经博主允许不得转载。

Linux Bash Shell学习(九):流程控制——if/else

  本文也即《Learning the bash Shell》3rd Edition的第五章Flow Control之读书笔记,但我们将不限于此。flow control是任何编程语言中很常用的部分,...
  • flowingflying
  • flowingflying
  • 2009年12月22日 02:17
  • 132472

shell脚本----if(数字条件,字符串条件,字符串为空)

二元比较操作符,比较变量或者比较数字. 注意数字与字符串的区别. 1.整数比较  -eq 等于,如:if [ "$a" -eq "$b" ] -ne 不等于,如:if [ "$a" -ne...
  • yf210yf
  • yf210yf
  • 2013年06月30日 14:01
  • 160775

bash if

if [ condition ]then     actionfi注意:“if”和“[”之间需要空格,如果你不空格,shell会报告语法错误的。我就被这个浪费了好一阵时间conditon测试类型对照表...
  • yuanchao3333
  • yuanchao3333
  • 2009年07月24日 14:28
  • 12474

Bash_Shell if 条件判断

菜鸟我最近在学习shell脚本,自己写了个很简短的脚本测试下,一直报错“syntax error near unexpected token `then' ”。上网google了一圈也没发现原因。原来...
  • mci2004
  • mci2004
  • 2012年02月06日 16:02
  • 10890

Bash脚本之if-then语句

if-then语句格式如下: if 命令; then 语句块 fi 注意: 1. 如果命令的退出状态码是0,则执行语句块,否则跳过语句块。 每条命令执行结束后都会产生一个退出状态码,退出状态码是...
  • hws912
  • hws912
  • 2014年03月06日 10:19
  • 1966

#!/bin/bash

在shell脚本的第一行中,必须写#!/bin/bash吗?带着这个问题,我今天在百度上搜索了一下, 发现在一个贴子中讨论了这个问题,觉得各个跟贴者在回答这个问题时,都解释的很有道理,现摘记如下,以...
  • jackalfly
  • jackalfly
  • 2012年05月16日 10:47
  • 13446

玩转Bash脚本:循环结构之while循环

和其他语言一样Bash的循环结构中也有while语句。它的基本结构为 while 条件;do 循环体;done 和其他语言不同的是,bash脚本中的while条件很丰富,可以是方括号[]就像if那样的...
  • guodongxiaren
  • guodongxiaren
  • 2015年01月31日 16:27
  • 15562

关于近期很火的Bash漏洞的检测及修复方法

近期Bash漏洞让不少类Unix躺枪。。。 下面是相关的检测方法和修复方法(内容来源阿里云开发者论坛) ------------------------------------------------...
  • ljgstudy
  • ljgstudy
  • 2014年09月27日 12:56
  • 3125

shell 循环语句

循环语句: for 语法结构: 1、列表循环 for variable in {list} do command... done for variable in var1 ...
  • u010265663
  • u010265663
  • 2017年05月03日 17:36
  • 461

Bash脚本之if-then语句

if-then语句格式如下: if 命令; then 语句块 fi 注意: 1. 如果命令的退出状态码是0,则执行语句块,否则跳过语句块。 每条命令执行结束后都会产生一个退出状态码,退出状态码是...
  • hws912
  • hws912
  • 2014年03月06日 10:19
  • 1966
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:bash 的if 语句,for 语句
举报原因:
原因补充:

(最多只允许输入30个字)