February 19, 2011

Dash与Bash的语法区别

如今Debian和Ubuntu中,/bin/sh默认已经指向dash,这是一个不同于bash的shell,它主要是为了执行脚本而出现,而不是交互,它速度更快,但功能相比bash要少很多,语法严格遵守POSIX标准,下面简要列举下从bash迁移到dash一般需要注意的问题

1.定义函数

bash: function在bash中为关键字

igi@gentoo ~ $ foo(){ echo $0;}

igi@gentoo ~ $ fo......

February 14, 2011

Bash星号的那点事

星号,这是个神奇的符号,在bash中,星号也充满魔力,它是通配符之一。

简单列举下星号的功能,被称为万能字符不是没有理由的.

1)文件名匹配: 默认情况下匹配所有非隐藏文件(即非.开头到文件)

2)字符串匹配: 匹配任意字符

3)$匹配所有参数

4)${array[]},表示了所有数组元素

5)乘法运算

6)** 冪运算

7)** bash4中提供的更牛b的文件名匹配,包含递归功能

接下我们来见识下它强大到魔力:

1)文件名匹配:

igi@gentoo ~ $ ls

......

January 19, 2011

Bash空格的那点事

空格,一个看不见的字符,很不起眼,也正由于不起眼,很多人经常忽略它,导致代码出错,却还找不着北。这里,我们来聊聊bash中空格的那点事。

先了解下bash中什么时候该用空格,什么时候不该用。

1. 等号赋值两边不能有空格

2. 命令与选项之间需要空格

3. 管道两边空格可有可无

我们来看看常见的问题

1. 赋值时等号两边或者只有左边多了空格

igi@gentoo ~ $ var1 = test

bash: var1: command not found

igi@gentoo ~ $ echo ${var1:?error}

bash: var1: error

igi@gentoo ~ $ e......