每次学了忘,忘了学,怎么记不住,因为长时间不用了

Bash 流程控制

循环

for循环

for item in $list
do
echo $item
done

另一种与C语言类似的写法

for((i=; i<; i++))
do
echo $i
done

双括号是个非常好的东西!

还有一种

for i in $(seq  5)do
done

seq还有第三个参数表示step

更叼的

for i in {..}
do
done

还可以指定{1..10..step}

条件分支

if [ -f $file_path ]; then
#do_something
fi

if 后面跟条件如为0则进入then分支,这个和C/C++不同,因为bash主要用来根据一些命令的成功与否进行进一步的操作,命令执行成功则返回0,失败则非零

一般在if后面总是跟个中括号,但它不是bash语法的一部分,[ 也是一个命令,是bash的内建命令,它的参数以]结尾,与命令test功能一致

条件取反

加!即可

类似C中的Switch语句

case "$VAR" in

itemA) cmd;;

itemB) cmd;;

*) cmd;;

esac

item可以使用通配符

常用文件检测

  • -a   file :file 存在
  • -d file :file存在并是一个目录
  • -e file :file 存在,同- a
  • -f file :file 存在并且是一个常规的文件(不是目录或者其他特殊类型文件)
  • -r file :有读的权限
  • -s file :文件存在且不为空
  • -w file :有写的权限
  • -x file :有执行的权限,或者对于目录有search的权限
  • -N file :在上次读取后,文件有改动
  • -O file :own所属的文件
  • -G file :group所属的文件
  • file1 -nt file2 :file1 比 file2 更新,以最后更新时间为准
  • file1 -ot file2 :file1 比 file2 更旧 ,以最后更新时间为准

常用整数判断

-eq  等于      if [ "$a" -eq "$b" ]
-ne  不等于   if [ "$a" -ne "$b" ]
-gt  大于      if [ "$a" -gt "$b" ]
-ge 大于等于 if [ "$a" -ge "$b" ]
-lt  小于       if [ "$a" -lt "$b" ]
-le  小于等于  if [ "$a" -le "$b" ]
另外可以使用((  ))在双括号内进行C风格的比较
numa=1
numb=2
if (($numa > $numb)); then
echo "$numa > $numb"
else
echo "$numa < $numb"
fi

常用字符判断

=   等于 if [ "$a" = "$b" ]

== 等于if [ "$a" == "$b" ] 与=等价.

<小于, 按照ASCII字符进行排序

if [[ "$a" < "$b" ]]

if [ "$a" \< "$b" ] 注意"<"使用在[ ]结构中的时候需要被转义.

>大于, 按照ASCII字符进行排序

if [[ "$a" > "$b" ]]

if [ "$a" \> "$b" ] 注意">"使用在[ ]结构中的时候需要被转义.

-z 字符串为"null", 意思就是字符串长度为零

-n 字符串不为"null".

S=a

if [ "$S"  == "b" ];then
echo "char is b"
elif [ "$S" == "a" ];then
echo "char is a"
else
echo "char is $S"
fi

尽量使用if与then在一行的方式,否则比较容易出错。

[]中使用条件与/或需要使用-o -a 进行连接不能用&&,||,但是[[]]可以,所以还是用[[]]吧,计算上也是使用(())来的方便

函数

sayhello() {
if [ $# -ge 1 ];then
echo "hello $1!"
else
echo "hello!"
fi
} sayhello 'my friends'

函数调用时没有括号

参数参数通过dollar1,dollar2...获取

参考:

http://www.21andy.com/manual/advanced-bash-scripting-guide/comparison-ops.html

Bash 脚本语法的更多相关文章

  1. linux下bash脚本语法

    1.shell中的变量定义和引用(1)变量定义和初始化.shell是弱类型语言(语言中的变量如果有明确的类型则属于强类型语言:变量没有明确类型就是弱类型语言),和C语言不同.在shell编程中定义变量 ...

  2. Linux bash shell脚本语法入门

    1.基础 #!/bin/bash   //bash脚本第一句都是这个,他会让系统指定以bash来解释这个脚本 #                 //shell脚本注释符号 2.变量和使用 HOME= ...

  3. (转)Linux bash shell脚本语法入门

    http://www.linuxsky.org/doc/newbie/201004/389.html 1.基础 #!/bin/bash //bash脚本第一句都是这个,他会让系统指定以bash来解释这 ...

  4. Bash 脚本编程语言中的美学与哲学

    我承认,我再一次地当了标题党.但是不可否认,这一定是一篇精华随笔.在这一篇中,我将探讨 Bash 脚本语言中的美学与哲学. 这不是一篇 Bash 脚本编程的教程,但是却能让人更加深入地了解 Bash ...

  5. Bash脚本15分钟进阶指导

    首先声明这是网上摘来的.这里的技术技巧最初是来自谷歌的“Testing on the Toilet” (TOTT).这里是一个修订和扩增版本. 脚本安全 我的所有bash脚本都以下面几句为开场白: # ...

  6. 一个很不错的bash脚本编写教程

    转自 http://blog.chinaunix.net/uid-20328094-id-95121.html 一个很不错的bash脚本编写教程,至少没接触过BASH的也能看懂! 建立一个脚本 Lin ...

  7. Bash脚本15分钟进阶教程

    转载: Bash脚本15分钟进阶教程 这里的技术技巧最初是来自谷歌的"Testing on the Toilet" (TOTT).这里是一个修订和扩增版本. 脚本安全 我的所有ba ...

  8. 脚本命令高级Bash脚本编程指南(31):数学计算命令

    题记:写这篇博客要主是加深自己对脚本命令的认识和总结实现算法时的一些验经和训教,如果有错误请指出,万分感谢. 高等Bash脚本编程指南(31):数学盘算命令 成于坚持,败于止步 操作数字 factor ...

  9. shell脚本语法基础汇总

    shell脚本语法基础汇总 将命令的输出读入一个变量中,可以将它放入双引号中,即可保留空格和换行符(\n) out=$(cat text.txt) 输出1 2 3 out="$(cat te ...

随机推荐

  1. JavaScript学习笔记——4.数组

    数组(Array) 数组也是一个对象   数组中保存的内容我们称为元素 数组的操作 - 创建数组 - var arr = new Array();   - var arr = []; 例如:var m ...

  2. 关于“java.lang.OutOfMemoryError : unable to create new native Thread”的报错问题

    好吧 我发誓这是postgresql的Mirroring Controller的RT测试的最后一个坑了. 在这个RT测试的最后,要求测试Mirroring Controller功能在长时间运行下的稳定 ...

  3. WCF 客户端连接慢

    WCF客户端第一次连接超过1分钟,以后再连接就快了. 在 Config中加入 <basicHttpBinding> <binding name="BasicHttpBind ...

  4. Qt 学习之路 2(48):QSortFilterProxyModel

    Qt 学习之路 2(48):QSortFilterProxyModel 豆子 2013年4月11日 Qt 学习之路 2 6条评论 从本章开始,我们将逐步了解有关自定义模型的相关内容.尽管前面我们曾经介 ...

  5. fork 炸弹

    一段古老的Linux shell程序 :() { :|:& };: 这是bash shell的写法,首先定义了一个函数:(),花括号里面是函数体,这里递归执行函数本身,通过管道在后台再递归运行 ...

  6. Pollard_Rho 整数分解法【学习笔记】

    引文:如果要对比较大的整数分解,显然之前所学的筛选法和是试除法都将不再适用.所以我们需要学习速度更快的Pollard_Rho算法. 算法原理: 生成两个整数a和b,计算p=gcd(a-b, n),知道 ...

  7. indexOf获取字符位置

    先定义一个字符串: var aString = "you are beautiful,so beautiful,and i love you ver much"; 拿到第一个逗号的 ...

  8. PIE SDK大气校正

    1. 算法功能简介 大气校正的目的消除大气对太阳和来自目标的辐射产生吸收和散射作用的 影响,从而获得目标反射率.辐射率.地表温度等真实物理模型参数.大多数情 况下,大气校正同时也是反演地物真实反射率的 ...

  9. Jenkins之构建邮件通知之插件Email Extension

    插件: 系统管理-->系统设置--> Extended E-mail Notificati 附上邮件内容: <!DOCTYPE html> <html> <h ...

  10. oracle12C--新特性

    Orcle 12c 新特性-使用DBCA创建物理备库 >>点击这里<< Orcle 12c DG 新特性-Far Sync >>点击这里<< Orcle ...