shell(1)

来源:互联网 发布:淘宝店铺一键安装 编辑:程序博客网 时间:2024/06/05 14:24

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. 1 #!/bin/sh
  2. 2
  3. 3 echo "Please input arguements is $# "
  4. 4 echo "What you input : "
  5. 5 while [[ $* != "" ]]
  6. 6 do
  7. 7 echo $1
  8. 8 shift
  9. 9 done
6:shell整数加法

#!/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、]与; 之间不能有空格




0 0