#号:
注释,行首以#开头为注释(#!是个例外)
命令是不能跟在同一行上注释的后边的,没有办法,在同一行上,注释的后边想
要再使用命令,只能另起一行.
当然,在echo 命令中被转义的#是不能作为注释的.
同样的,#也可以出现在特定的参数替换结构中或者是数字常量表达式中.
echo “The # here does not begin a comment.” #不是注释
echo ‘The # here does not begin a comment.’ #不是注释
echo The \# here does not begin a comment. #不是注释 \转义字符
echo The # 这里开始一个注释
echo ${PATH#*:} # 参数替换,不是一个注释
echo $(( 2#101011 )) # 数制转换,不是一个注释
; 号:命令分隔符,可以用来在一行中来写多个命令。
;; 号:终止”case”选项.
如:
[cce] case "$variable" in abc) echo "\$variable = abc" ;; xyz) echo "\$variable = xyz" ;; esac [/cce]
. 号:
命令等价于source 命令
作为文件名的一部分.如果作为文件名的前缀的话,那么这个文件将成为隐藏文件.将不被 ls 命令列出.
作为目录名的一部分的话,那么.表达的是当前目录.”..”表示上一级目录.经常作为一个文件移动命令的目的地
字符匹配,这是作为正则表达是的一部分,用来匹配任何的单个字符
” 号:部分引用.”STRING”阻止了一部分特殊字符,在一个双引号中直接使用变量名,
一般都是没有问题的.它阻止了所有在引号中的特殊字符的
重新解释–包括变量名[2]–但是$,`和\除外.[3]保留$,作为特殊字符的意义,是为了能够在双
引号中也能够正常地引用变量(“$var”)。
使用”"来防止单词分割.[4]如果在参数列表中使用双引号,将使得双引号中的参数作为一个参
数.即使双引号中的字符串包含多个单词(也就是包含空白部分),也不会变为多个参数
用双引号把参数封到 echo 中是很有必要的,只有在单词分隔或时保留空白时的时候可能
有些问题.
’ 号:单引号操作总体上和”"很像,但不允许引用变量.因为$的特殊含义被关闭了.在”中除了’,其他
字符都没有特殊的含义了.所以单引号比双引号严格.
因为即使是\,在”中都被关闭了,所以你想在”中显示’的含义,将得不到预期的效果.
. 号:
逗号链接了一系列的算术操作,虽然里边所有的内容都被运行了,但只有最后一项被
返回.
如:
let “t2 = ((a = 9, 15 / 3))” # Set “a = 9″ and “t2 = 15 / 3″
\ 号:转义字符,如\X 等价于”X”或’X',
/ 号:除法运算或是文件名路径分隔符。
` 号:后置应用,命令替换。
: 号:空命令,等价于 “NOP”也可以被认为与shell 的内建命令(true)作用相同.”:”命令是一
个 bash 的内建命令,它的返回值为0,就是shell 返回的true.
在 if/then 中的占位符,什么都不做。
在一个 2 元命令中提供一个占位符;使用”参数替换”来评估字符串变量
在和 > (重定向操作符)结合使用时,把一个文件截断到0 长度,没有修改它的权限.
如果文件在之前并不存在,那么就创建它
还用来在/etc/passwd 和$PATH 变量中用来做分隔符.bash$ echo $PATH
/usr/local/bin:/bin:/usr/X11R6/bin:/sbin:/usr/sbin:/usr/games
! 号:取反操作符,将反转”退出状态”结果,
* 号:万能匹配符,用于文件名或是正则表达式中;数学式中的乘法运算符。
**幂运算
? 号:测试操作,用了测试结果,测试变量是否被set。
正则表达式中用了匹配任意单个字符。
$ 号:变量替换。正则表达式中德行结束符。