shell学习总结

1>程序必须以下面的行开始,符号#!用来告诉系统它后面的参数是用来执行该文件的程序。

#!/bin/sh或者其它

 

2>变量赋值

第一:在等号 "=" 的两边没有空格

第二个:在定义一个字时可以省略引号,但是当定义的环境变量值多于一个字时(包含 空格或制表键),引号是必须的。

 

3>当环境变量没有与周围文本明显分开时,可以用花括号将它括起

myvar='test'

echo $myvartest(错误)

echo ${myvar}test(正确)

 

4>当导出环境变量时,它可以自动地由以后运行的任何脚本或可执行程序环境使用

export myvar

 

5>单引号与双引号区别

单引号变量无法扩展

myvar=test

echo '$myvar' //结果:$myvar

echo "$myvar" //结果:test

 

6>`反引号

反引号的功能是命令替换,将反引号中的字符串做为命令来执行

A=`date`
echo $A 显示的不是date而是当时的时间串

 

7>##,#,%%,%的用法参考

http://www.ibm.com/developerworks/cn/linux/shell/bash/bash-1/index.html

 

8>"$0" 这个程序的执行名字,$n 这个程序的第n个参数值,n=1..9 ,$* 这个程序的所有参数,$# 这个程序的参数个数,$? 执行上一个指令的返回值

 

9>判断文件的属性

 

-e 文件存在返回1, 否则返回0

-r 文件可读返回1,否则返回0

-w 文件可写返回1,否则返回0

-x 文件可执行返回1,否则返回0

-o 文件属于用户本人返回1, 否则返回0

-z 文件长度为0返回1, 否则返回0.

-f 文件为普通文件返回1, 否则返回0

-d 文件为目录文件时返回1, 否则返回0

 

10>测试字符串

 

字符串1 = 字符串2 当两个字串相等时为真

字符串1 != 字符串2 当两个字串不等时为真

-n 字符串    当字符串的长度大于0时为真

-z 字符串  当字符串的长度为0时为真

字符串 当串字符串为非空时为真

 

11>测试两个整数关系

 

数字1 -eq 数字2 两数相等为真

数字1 -ne 数字2 两数不等为真

数字1 -gt 数字2 数字1大于数字2为真

数字1 -ge 数字2   数字1大于等于数字2为真

数字1 -lt 数字2 数字1小于数字2为真

数字1 -le 数字2 数字1小于等于数字2为真

 

12>逻辑测试

 

-a  与
-o  或
!      非

 

13>特殊字符

 

$ 美元符

 

\ 反斜杠

 

` 反引号

 

" 双引号

 

< ,>,*,?,[,]

 

14>通配符

 

* 任意字符串


? 一个任意字符


[abc] a, b, c三者中之一


[a-n] 从a到n的任一字符

 

15>字符串比较

请用双引号括起字符串和字符串变量,因为如果环境变量中恰巧有一个空格或制表键,bash 将无法分辨,从而无法正常执行程序

if [ "$myvar" = "foo bar oni" ]
then
     echo "yes"
fi

 

16>shell算术

请使用算术表达式用 "$((" 和 "))" 括起

echo $((1+3))

 

17>确保方括号空格

通常用" [ ] "来表示条件测试。要确保方括号的空格。

 

18>local定义变量,把变量放在局部名称空间

 myvar="hello"
 myfunc() {
     local x
     local myvar="one two three"
     for x in $myvar
     do
         echo $x
     done
 }
 
 myfunc
 
 echo $myvar $x

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章