Shell特殊字符
# 注释
-
表示注释 #注释
-
在引号中间和\#等表示#本身
-
echo ${PATH#*:} # 参数替换,不是一个注释
-
echo $(( 2#101011 )) # 数制转换,不是一个注释
-
命令分隔,在一行中写多个命令 echo "aa" ; echo "bb"
-
在条件中的if和then如果放在同一行,也用;分隔
-
命令:source
-
文件名的前缀,隐藏文件
-
目录:.当前目录,..父目录
-
正则表达式:匹配任意单个字符
-
空操作
-
死循环: while :
-
在if/then中表示什么都不做,引出分支
-
设置默认参数: : ${username=`whoami`}
-
变量替换: : ${HOSTNAME?} ${USER?} ${MAIL?}
- 在和 > (重定向操作符)结合使用时,把一个文件截断到0 长度,没有修改它的权限;如果文件在之前并不存在,那么就创建它.如:: > data.xxx #文件"data.xxx"现在被清空了. 与 cat /dev/null >data.xxx 的作用相同 然而,这不会产生一个新的进程,因为":"是一个内建命令.在和 >> 重定向操作符结合使用时 , 将不会对想要附加的文件产生任何影响 .如果文件不存在 , 将创建 .
-
取变量的值 echo $PATH
-
正则表达式中表示行的结尾
-
${} 参数替换 ${PAHT}
-
$* 所有参数
-
$# 参数个数
-
$$ 进程的ID
-
$? 进程的返回状态
-
命令组,在一个子Shell中运行 (a=3;echo $a) 其中定义的变量在后面不可用
-
数组初始化: array=(a,b,c)
-
测试 [-z $1]
-
数组元素 a[1]='test'
-
[[]]表示测试 使用[[ ... ]]条件判断结构, 而不是[ ... ], 能够防止脚本中的许多逻辑错误. 比如, &&, ||, <, 和> 操作符能够正常存在于[[ ]]条件判断结构中, 但是如果出现在[ ]结构中的话, 会报错.
-
(( ))数学运算
-
在正则表达式中表示范围 [a-z]
-
参数选项
-
减号
-
重定向stdin和stdout:cd /source/directory && tar cf - . ) | (cd /dest/directory && tar xpvf -)
-
先前的工作目录 cd -
-
注:使用-开头的文件名和变量名可能会出现一些问题
控制字符