1:$()用于存放命令,可以赋值给变量
var=$(ls -l) 等价于` `
2:for 循环只能用双括号,for需要用do...done
for((i=1;i<100;i++))
3:while,需要用到do...done
while (( $first <= $end ))
或者
while [ $first -le $end ]
或者
while [ $num != 4 ](注意有空格)
4:数值运算,expr用于整数值
var=10
var=$(expr $var '+' 1)
echo $var
或者
var=10
var=`expr $var + 1` (注意+两边有空格)
echo $var
或者
i=$(($i+1))
或者
let first=$first+1
或者
let "num++" (注意let进行运算,是没有$符号的)
或者
let "num+=1"
或者
let "num=100"
或者
let num=$num+3
5:获取参数个数和各个参数的小程序
- 1 #!/bin/sh
- 2
- 3 echo "Please input arguements is $# "
- 4 echo "What you input : "
- 5 while [[ $* != "" ]]
- 6 do
- 7 echo $1
- 8 shift
- 9 done
#!/bin/ksh
let a=$1+$2
((c=$1+$2))
d=`expr $1 + $2`
echo "$1+$2 = ${a}"
echo "$1+$2 = $c"
echo "$1+$2 = $d"
root@sol-x2100-11:~# ./int 1 2
1+2 = 3
1+2 = 3
1+2 = 3
7:expr命令一般用于整数值,但也可用于字符串。 (注意运算符左右都有空格 ,如果没有空格表示是字符串连接)
使用乘号时,必须用反斜线屏蔽其特定含义。因为shell可能会误解显示星号的意义。
root@sol-x2100-11:~# expr 30 * 3
expr: syntax error
root@sol-x2100-11:~# expr 30 \* 3
90
root@sol-x2100-11:~# expr 30*3 (左右没空格,表示是字符串)
30*3
可以用expr测试一个数。如果试图计算非整数,将返回错误。
root@sol-x2100-11:~# a=1.1
root@sol-x2100-11:~# expr $a + 1
expr: non-numeric argument
expr也可以返回其本身的退出状态,不幸的是返回值与系统最后退出命令刚好相反,成
功返回1,任何其他值为无效或错误。下面的例子测试两个字符串是否相等,这里字符串为
root@sol-x2100-11:~# a=100
root@sol-x2100-11:~# expr $a = 100
1
root@sol-x2100-11:~# echo $?
0
从位置处抓取字串
root@sol-x2100-11:~# expr substr "this is a test" 3 7
is is a
数字串 only the first character
root@sol-x2100-11:~# expr index "sdfsdfssdf" d
2
expr的强大之处势四则运算和字符串的操作。
(1)先说四则运算,在Shell中四则运算不能简简单单的加减乘除,应该要写如下的格式:
$val1=`$val2 - 1`
其中“=”后面用“`”包住表达式,这个符号在Shell中十分有用,是Tab键上面“~”的原来形式。可以用来将很多命令的结果保存到一个变量中去。接着就是运算符了,运算符的左右两边必须是空格,否则会出错。
(2)提取指定字符的下标:expr index 内容 字符,例如:$ind=`expr index "$content" "="`提取字符串的子串:expr substr 内容 起始位置 终点位置,例如:$con=`expr substr "$content" "1" $ind`
expr length String1 返回String1长度
expr index String1 String2 返回 String1 中包含 String2 中任意字符的第一个位置。
expr substr string1 startposition length 返回string1中从startposition开始的lenght个字符
最好用$(())代替,效率更高
Reference:http://desheng666.blog.163.com/blog/static/4908408220121643953425/
1、if 与[ 之间必须有空格
2、[ ]与判断条件之间也必须有空格
3、]与; 之间不能有空格