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

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

最新文章

  1. [软件推荐]转换html到chm的软件,winchm pro
  2. 【数据结构与算法分析——C语言描述】第二章总结 算法分析
  3. 一个统计目录文件大小的php函数
  4. XML新增、修改、选择
  5. codeforces 432D Prefixes and Suffixes
  6. React-Native获取文本框的值
  7. 通过配置Tomcat,让Android真机通过局域网访问PC的文件
  8. C#实现Web文件上传的两种方法
  9. 使用CSS3中的input标签与lable标签组合实现banner图的切换
  10. 嵌入式Linux引导过程之1.2——Xloader的XLOADER_ENTRY
  11. lambda表达式Expression&lt;Func&lt;Person, bool&gt;&gt; 、Func&lt;Person, bool&gt;区别
  12. UWP Acrylic Material
  13. 终于不再在懵逼mysql原生语句,orm超级登场
  14. hadoop框架详解
  15. Vue解决同一页面跳转页面不更新
  16. 【iCore4 双核心板_ARM】例程三:EXTI中断输入实验——读取ARM按键状态
  17. Servlet知识点回顾
  18. if 判断语句
  19. 列表批量删除和单个删除共用一个方法传递集合到Controller
  20. 感恩节MathType公式编辑器6折优惠启动

热门文章

  1. hexo博客的相关配置
  2. SDUT OJ 数据结构上机测试1:顺序表的应用
  3. Qt 学习之路 2(37):文本文件读写
  4. spring配置文件中导入约束的详细步骤
  5. docker 镜像的配置文件修改
  6. 114th LeetCode Weekly Contest Array of Doubled Pairs
  7. UI组件化介绍
  8. 一种简单快速的模板解析方法,活用with javascript版
  9. scrapy框架之(CrawlSpider)
  10. Linux混杂设备驱动