运算符 流控制 test echo

来源:互联网 发布:战舰世界兴登堡数据 编辑:程序博客网 时间:2024/06/06 08:30

shell传递参数,

执行shell脚本的时候,向脚本中传递参数,脚本内获取参数的格式为 $n n是一个数字,代表的是

  第几个参数,n是从1开始,0指的是文件的文件名,        echo "执行的文件名:$0";        echo "第一个参数为:$1";    $#传递到脚本的参数个数,  $*显示全部的传入参数。    三个参数1 2 3 则“*”表示"123" ”@”表示“1” ”2“ ”3”

数组: 可以存放多个值的数据类型 shell不支持多维数组

定义数组 array_name=(1 2 3 4) array_name[0]=value1读取数组  ${array_name[index]}  读取数组中的所有元素    ${array_name[*]}   ${array_name[@]}获取数组的长度    ${#array_name[*]}     ${#array_name[@]}

shell基本运算符:

算术运算符:+ - × / % = == != *号前面使用expr必须加\ *

  原生的bash不支持算术运算,一般通过命令awk expr 来实现    expr 2 + 2  :表达式与运算符之间要有空格2+2不对,         完成的表达式要被``包括,0

关系运算符:

 -eq 检测两个数是否相等 -ne 检测两个数是否不相等 -gt 检测左边数是否大于右边数 -lt 检测左边是否小鱼右边 -ge 检测左边是否大于等于右边 -le 检测左边是否小于等于右边     eg:  [$a -eq $b ]   参数要用变量内容

布尔运算符: !非运算 -o 或运算 -a与运算
[! false ] [alt20ob -gt 100] [$a -lt 20 -a ]

逻辑运算符: && 与 ||或

字符串运算符: = !=

   -z 检测字符串长度是否为0 是则返回true   -n 检测字符串长度是否为0  不是则返回true   str 检测字符串是否为空,不为空返回true

文件测试运算符

-b 检测文件是否是块设备文件-c 检测文件是否是字符设备文件-d 检测文件是否是目录、、、、、、

echo 命令

显示普通字符串 : echo “tiansongtao”

显示转移字符串 : echo “\”if is a tian\”“

显示变量 : echo ” $name “

显示换行 : echo -e ” OK! \n” -e 开启转义

显示不换行 : echo -e ” OK \c”

显示结果定向至文件 echo “tiansongtao “>>myfile

原样输出字符串,不转义取变量 echo $tian\"—–$tian\”

显示命令执行结果: echo date—-显示当前时间

printf 模仿C的输出 可以控制多种输出

eg printf format-string [arguments、、、]    format-string 为格式控制字符串    arguments  为参数列表  print "%-10s %-8s %-4s\n" 姓名 性别 体重kg  print "%-10s  %-8s %-4.2f\n" 郭靖 男 66.2     结果为: 姓名   性别   体重kg             郭靖    男     66.2  %s %c % d %f 都是格式替代符  %-10s:指一个宽度为10的字符,(-表示       左对其,没有是右对其,)  %-4.2f 表示格式为小数,.2表示两位小数printf转义字符:     \a  警告   \b后退    \c抑制不显示输出结果中的换行字符     \n 换行 \f换页  \v垂直制表,

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

-eq 等于则为真-ne  不等于则为真-gt  大于则为真    -ge  大于等于则为真-lt  小于则为真    -le  小鱼等于则为真   eg:  num1=100   num2 = 100         if test $[num1]  -eq $[num2]         then             echo  "两数相等"

shell流程控制

在shell中,如果else没有要执行的语句就不要这个else    if else      if  condition      then         command1         command2      else         command      fi末尾要用fi就是if 倒过来的拼写if-else -if -else     if condition1     then         command1     elif condition2     then         command     else      commandN     fi

for循环

 for var in item1 item2、、、 do    command1 done   eg:  for loop in 1 2 3 4 5        do           echo "the value is $loop"        done

while语句
while condition
do
command1
done
eg: int-1
while((int<=5))doechoint
done

case 语句为多选择语句, 工作方式,取值后必有单词in,每一个模式以)括号结束,一个模式一致执行到;;  case 值 in    模式1)        command1        ;;   两个;;号就相当于break    模式2)        command2        ;;  esac    这个为全部结束标志eg:  echo `你输入的数字为:`     read aNum     case $aNum in       1) echo `你选择了1`          ;;       2) echo `你选择了2`          ;;     esac

跳出循环 break

  允许跳出所有循环,(终止执行后面的所有循环)

continue 跳出本次循环,接着执行别的循环

0 0