您的位置:首页 > 运维架构 > Shell

shell学习总结

2011-09-02 16:20 225 查看
转载:http://kwj.iteye.com/blog/707338

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息