bash学习

一 shell区别及运行方法

    shell一般指 shell script脚本;而广义是指shell终端是和操作系统沟通的桥梁,一般有Bsh和Bash.

    运行方法:

  1. 按可执行程序执行:先编写脚本文件filename.sh(以#!/bin/sh作为首行,说明后面的按该shell执行);然后用chmode -x filename.sh修改成可执行权限;然后以./finename.sh来执行
  2. 直接执行:./bin/sh filename.sh来执行。当然此时文件不需要以#!/bin/sh作为首行.

    2种注释:

  1. 单行注释:#
  2. 多行注释:其中的2个/可以换成其它字符
    :<</
    
    
    /

     

二 变量;

  1. 由字母数字下划线组成,变量名与=号之间无空格
  2. 变量使用:${var}
  3. 数组 arry={val1 var2 var3)     
  4. 数组的调用${arry[n]}   ,整个数组${arry[@]},数组元素的个数${#arry[@]}
  5. 字符串:单引号中不能集合变量;双引号可以。字符串长度 str="abcd"  len=${#str};同时可以切片求子串或查找字符 ab==${str:0:2}
  6. 删除变量 unset var

三 变量传递:

    在.sh脚本中用$n来接收传递的参数,一般第一个参数$0一般是文件本身,其它参数从1开始。在终端中直接按 ./filename.sh para1 para2 ....来传递参数。

    参数的总个数$#来表示。所有的参数的表示$*或者$@前者等于把所有的参数作为一个字符串;而后者则将每一个参数作为一个字符串。

    【】中间可以对参数进行一些比较和判断。前后都要有空格

 四 运算:

     表达式:`expr  $a \* $b` ,注意expr后的字符时esc键下面的的字符不是单引号。乘号*前需要加\

     关系运算符:-eq  -ne  ;-ge -lt;  -ge  -le;

     布尔运算符:-a,-o,!

      逻辑运算符:&&,||

      字符串运算符:=,!=;  -z /-n/$分别代表长度为0,不为0,字符串为空

     温控按摩测试运算符;

五 其它命令:

     echo str  >>filename.sh  #输出到文件。

    read var:#从标准输入中读取一行给shell变量var

    printf format-string [arguments...]

    test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试.

   let:

   grep :是从给定字符串中寻找匹配内容的命令.如echo "Hello World !" | grep -e Hello   echo $?    #结果为Hello World !    0#成功在hello word!中找到匹配的hello字符串

  

六流程控制:

  5.1分支结构:

    

f condition1
then
    command1
elif condition2 
then 
    command2
else
    commandN
fi

 

5.2 多分支选择:

  

casein
模式1)
    command1
    command2
    ...
    commandN
    ;;
模式2)
    command1
    command2
    ...
    commandN
    ;;
*)#类似于defualut
    break/continu  #跳出循环的2种类似C的方法
  ;;
esac

5.3 循环结构:

 1 #for循环
 2 for var in item1 item2 ... itemN
 3 do
 4     command1
 5     command2
 6     ...
 7     commandN
 8 done
 9 
10 
11 #while循环
12 while condition
13 do
14     command
15 done
16 
17 #until循环
18 until condition
19 do
20     command
21 done
22 
23 #超级循环的几种格式:
24 while :
25 #while true
26 do
27     command
28 done
29 
30 for (( ; ; ))

六 函数:与C大致相同,不同的是

  1.   函数调用时不需要加()
  2. 函数的参数传递:实参直接逐个写,程序里面用$n来或者对应参数。
  3. 函数的返回值:$?     #需要注意的是这需要在函数调用后直接来用,不能跨函数使用;和 C 语言不同,shell 语言中 0 代表 true,0 以外的值代表 false。

七 重定向:标准输入、标准输出,错误输出,

  command >file:(覆盖方式)重定向输入到file中;command >>file:(追加末尾方式)重定向输入到file中。

     

      /dev/null 文件:当重定向到这里时,相当于禁止输出。因为写进去的内容被丢弃,读时啥也读不到。

八文件的包含:

   . filename # 注意点号(.)和文件名中间有一空格 source filename

 

posted on 2021-07-09 17:08  杰瑞鼠  阅读(35)  评论(0编辑  收藏  举报