内置命令 echo 输出一行文本到标准输入设备
read 从标准设备读取数据
print 格式化输出
declare 定义或创建变量或数组
let 让未定义的变量参与算术运算
expr 执行表达式
shift 把所有参数变量向下移动一个位置($0不参与,也可以理解为删除变量1)
1 2 3 4 5 6 #!/bin/bash while [ "$1 " != "" ]do echo $1 shift done
eval 执行命令
trap 用来定义接收 trap command signal
1 2 3 4 5 6 7 8 9 10 11 12 trap command signal
1 2 3 4 5 #!/bin/bash trap "rm -f tmp$$;exit 0" 2 3touch tmp$$ sleep 60
exit 退出SHELL程序
sleep 表示睡眠多少秒
test 条件测试
$RANDOM 随机变量
字符串操作 pattern和old都可以使用通配符
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 ${#var} 返回字符串变量var长度 ${var:n} 返回${var} 中从第n+1个字符到最后的部分 ${var:n:len} 返回${var} 中从第n+1个字符开始,长度为len的部分 ${var#pattern} 删除${var} 中开头部分与pattern匹配的最小部分 ${var##pattern} 删除${var} 中开头部分与pattern匹配的最大的部分 ${var%pattern} 删除${var} 中结尾部分与pattern匹配的最小部分 ${var%%pattern} 删除${var} 中结尾部分与pattern匹配的最大部分 ${var/old/new} 用new替换${var} 中第一次出现的old ${var//old/new} 用new替换${var} 中所有的old(全局替换)
算术扩展 $[]
$(())
(())
expr
let
1 2 let n=n+1(不可以有空格)let n = "n = n + 1"
变量使用
语句 循环语句都可以使用continue和break
for语句 非C语言格式
1 2 3 4 for variable in list do commands done
1 2 3 4 5 6 #!/bin/bash for i in s*do echo $i done
1 2 3 4 5 6 7 8 9 #!/bin/bash counter=0; for f in *do counter=$[$counter +1] done echo There are $counter files in 'pwd'
for语句 C语言格式
1 2 3 for ((exp1;exp2;exp3)do done
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 #!/bin/bash if [ $# -ne 1 ];ther echo 'usage:$0 <n>' exit 1 fi if [ $1 -lt "5" -o $1 -gt "15" ];then echo 'usage:$0 <n>' echo 'where 5 <= n <= 15' exit 1 fi for ((i=0;i<$1 ;i++))do for ((j=0;j<$[$1 -$i -1];j++)) do echo -n "" done for ((j=0;j<$[2*$i +1];j++)) do echo -n "*" done echo -ne '\n' done
select循环菜单
1 2 3 4 select variable in list do commands done
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #!/bin/bash select var in Dogs Cats Birds do case $var in Dogs) echo Dogs are my favorite pet ;; Cats) echo Cats are my favorite pet ;; Birds) echo Birds are my favorite pet ;; *) echo none of my favorite pet break ; ;; esac done