linux shell笔记


 新建 test.sh 运行命令 sh test.sh   1.打印hello word echo "hello word"   2.打印变量 str="hello word" echo $str 或者 echo ${str}   3.环境变量 $PATH, $HOME, $PWD, $USER, $UID, $SHELL等   4.获得字符串长度 echo ${#变量名}   例如: s="test"   echo ${#s}  返回结果:4   6.算术运算   在Bash shell环境中,可以利用let, (( ))和[ ]执行基本的算数操作.而在进行高级操作时,expr和bc这两个工具也会非常有用. let n=1+5   echo $n   let n++   let n--   let n+=6   n=$[ 1+5 ]   n=$(( 1+5 ))   n=`expr 3 + 4`   以上不支持浮点数,只用于整数运算.   bc是一个用于数据运算的高级工具,可以借助它执行浮点数运算.   echo "4 * 0.56" | bc   no=58   result=`echo "$no * 1.5" | bc`   echo $result   7.文件描述符和重定向   文件描述符是与文件输入,输出相关联的整数,用来跟踪已打开的文件,最常见的文件描述符 0 --- 标准输入(stdin) 1 --- 标准输出(stdout) 2 --- 标准错误(stderr)   echo "this is a sample text 1" > temp.txt   用下面的方法可以将输出文件重定向或保存到一个文件中 echo "this is a sample text 1" > temp.txt   8.数组 array_var=(1 2 3 4 5 6) --用空格分隔   另外还可以这样初始化数组, array_var[0]="test1"   打印特定索引的数组元素 echo ${array_var[0]}   如index=5   echo ${array_var[$index]}   以清单形式打印数组中的所有值: echo ${array_var[*]}  或者 echo ${array_var[@]}   打印数组长度: echo ${#array_var[*]} 或者 echo ${#array_var[@]}   9.read :从终端读取一行数据给后面的变量     read A     输入1234     echo A     打印出1234   10. test 比较2个字符串是否相等,相等为0,不等为1     A="HEllo"      B="World"     test $A = $B     test $A != $B     C=""     test -n $C   测试C的字符串长度是否不为0     test -z $C   测试C的字符串长度是否为0   #! /bin/bash A="hello" B="hello" test $A = $B echo "result = $?"   11. 整数测试 a -eq b 测试a与b是否相等   -ne  不相等   -gt  大于   -ge  大于等于    -lt  小于   -le  小于等于   #! /bin/bash a=5 b=5 test $a -eq $b echo "result = $?"   12. 文件测试 -d name  测试name是否为一个目录 -f name  测试name石否为普通文件 -L 是否为符号链接 -r 是否存在且为可读 -w  是否存在且为可写 -x 是否存在且为可执行 -s 是否存在且其长度不为0 f1 -nt f2  测试文件f1是否比f2更新 f1 -ot f2  测试文件f1石否比f2更旧   test -d "/home/rubydev" echo "result = $?"     13. 条件语句     1. if...then...fi         if 表达式             then 命令表         fi 表达式   if [ -d "/home/rubydev" ] then     echo "/home/rubydev is d" fi   if …; then elif …; then else fi   14. 数组 arr=(1 2 3 4 5) echo ${arr[@]}   for i in "${arr[@]}" do   echo "$i" done   15.shell编程怎么抽取匹配正则表达式的字符串?   a=$( expr 'helloworld20140501.txt' : '.*\([0-9]\{8\}\).*' ) echo $a   20140501   16.循环 #!/bin/bash for (( i = 0; i < 10; i++ )) do    if [ $i = 5 ]; then      continue    fi    echo $i done