高级bash编程指南(一)

1.cat /dev/null > messages 清空messages文件的内容。注意方向性。

2.shell的执行

(1)将scriptfile放到/usr/local/bin中,这样系统中的所有用户都可以使用了只要输入scriptfile即可。

(2)sh scriptfile 运行bash脚本将会禁止所有bash的扩展特性。

3.命令分割符【分号】,允许同一行里有多个命令。

4.case语句天生具有break的特性。

5.【点号】命令作为一个文件名的前缀时,使该文件具有了隐藏属性。除非用ls 加-a选项,不能显示。

6.【双引号】里面的特殊字符能够被解释,【单引号】是更强的引用,不允许解释变量和其他特殊的字符。

7.【逗号】表达式类似于C语言中的逗号表达式。用于连接一连串的数学表达式,每一个表达式都被求值,但只有最后一个被返回。

8.【`】(backquotes)命令替换 `command`可以将command的执行结果赋值给一个变量

9.【冒号】空命令。

(1)空操作退出码是真(0),它一般被认为和shell的内建命令true一样,它时Bash自身内建的。

(2)在必须要有两元操作的地方作为一个分割符和占位符。

if condition

then : #这里其实不做什么,也不能为空,否则语法错误。

else

  take-some-action

fi

: ${var='whoami'},注意:后面的空格。不加冒号,语法错误。

(3)和重定向操作符(>)连用,把一个文件长度截断为0,文件权限不变。如果文件不存在,则会创建一个新文件。

 : > file相当与cat /dev/null > file 或者 echo > file

和田间重定向操作符(>>)连用file存在没影响,不存在则创建它。

:这只能应用在普通文件中,不能用在管道,符号链接和其他特殊文件。

10.(1)$?保存了一个命令,一个函数,或者一个脚本的退出状态码的值.

(2)$$保存了脚本运行时的进程ID值。

11.圆括号【()】里面的命令是在新的一个子shell中执行的。

代码块【花括号】是匿名的函数,与函数不同的是,在代码块里面的变量仍然能在脚本后面的代码访问。

12.redirection重定向

(1) command>&2 把命令command的标准脚本(stdout)重定向到标准错误(stderr)。command >2 会将command命令的输出写到文件2中。&2代表stderr。

(2)command &>filename 把command的stdout和stderr重定向到stderr。

13.

管道是通过子进程实现的

variable="initial_value"
echo "new_value" | read variable
echo "variable = $variable" #initial_value

14.

a=`ls -l`
echo $a #此时会省去空白符,所以下面的两个表达式是有区别的
echo "$a"

15.

不同与许多其他的编程语言,Bash不以“类型”来区分变量。本质上bash变量是字符串,但是根据环境的不同,bash允许变量有整数计算和比较。其中的决定因素时变量的值是不是只含有数字。

(1)declare - a #生命a是整数

16.对于位置参数$9之后的参数必须用括号括起来。

17.输出引号 echo "The name of this script is \"$0\". "

18.脚本的最后一个参数

(1)lastarg=${!#}

(2)args=$#

lastarg=${!#}

19.basename filepath [suffix]  :strip directory and suffix from filenames

20. 。。。。。。

posted @ 2011-03-14 11:35  xdzone  Views(642)  Comments(0Edit  收藏  举报