1、echo -e "Hello World\n" //-e解释转义字符
2、${BASH_SOURCE-$0} 获取当前脚本名称
3、命令替换.`command` 结构使字符(`)[译者注:这个字符不是单引号,而是在标准美国键盘上的ESC键下面,在字符1左边,在TAB键上面的那个键,要特别留心]引住的命令(command)执行结果能赋值给一个变量。它也被称为后引号(backquotes)或是斜引号(backticks).例子:A=`ls -l`把ls -l的结果赋给A ls -l 作为命令来执行
4、等号两边不能直接接空格符,后面写法错误: 『myname = VBird』戒『myname=VBird Tsai』
5、使用unset命令删除变量,例如要清除PATH变量,可以如下: unset PATH
6、${parameter:-default}指定默认值 例如:SLAVE_FILE=${HADOOP_SLAVES:-${HADOOP_CONF_DIR}/slaves}
7、.source ./*.sh和 . ./*.sh的执行方式是等价的;./*.sh的执行方式等价于sh ./*.sh或者bash ./*.sh
8、-P 表示物理连接名,而不是link name, -- 是为了预防目录名有"-" 的情况出现,cd会执行失败(参考http://blog.chinaunix.net/uid-13875633-id-4419450.html)
9、basename命令会删掉所有的前缀包括最后一个slash(‘/’)字符,然后将字符串显示出来。如: $ basename /usr/bin/sort 输出"sort"。$ basename ./include/stdio.h .h 输出"stdio"。
10、
-e 该『档名』是否存在?(常用)
-f 该『档名』是否存在且为档案(file)?(常用)
-d 该『文件名』是否存在且为目录(directory)?(常用)
-eq 两数值相等 (equal)
-ne 两数值不等 (not equal)
-gt n1 大于 n2 (greater than)
-lt n1 小于 n2 (less than)
-ge n1 大于等于 n2 (greater than or equal)
-le n1 小于等于 n2 (less than or equal)
test -z string 判定字符串是否为 0 ?若 string 为空字符串,则为 true
test -n string 判定字符串是否非为 0 ?若 string 为空字符串,则为 false。 注: -n 亦可省略
11、
$# :代表后接的参数『个数』
$@ :代表『 "$1" "$2" "$3" "$4" 』之意,每个变量是独立的(用双引号括起来);
$* :代表『 "$1c$2c$3c$4" 』,其中 c 为分割字符,默讣为空格键, 所以本例中代表『 "$1 $2 $3 $4" 』之意。
12、$?:上一条指令返回值
13、sed 's/#.*$//;/^$/d' s/#.*$//是替换注释行, /^$/d是删除空行