1. 特殊字符

;;case终止符

""部分引用:$ \ ``可以使用

''全部引用:仅``可以使用

测试操作

$变量替换正则表达式行结束符

空命令

${}参数替换

$* $@ 位置参数

$?退出状态变量

()命令组

> &> &>> <重定向标准输出和标准错误

<<重定向 用于here document

<<< 重定向 用于here string

|管道,分析前面命令的输出,将前面命令的输出作为后面命令的输入


2. 特殊变量

位置变量:命令行传进的参数 $0 $1


3. Test

[] [[]]:

let (()):测试算术表达式

if [ "$a" \> "$b" ]:>需要转义


----- 进阶 -----

4 内部变量

$BASH

$BASH_ENV

$HOME

$HOSTNAME

$HOSTTYPE

$IFS 如何识别单词边界 默认为空格

$OSTYPE

$PPID

$PS1 主提示符

$PWD  工作目录

$UID

$#  命令行或者是位置参数的个数.

$*  所有的位置参数,被作为一个单词.  注意:"$*"必须被""引用

$@  与$*同义,但是每个参数都是一个独立的""引用字串,这就意味着参数被完整地传递, 并没有被解释和扩展

$!  在后台运行的最后的工作的 PID(进程 ID)

$_  之前执行的命令的最后一个参数.

$$  脚本自身的进程 ID 这个变量经常用来构造一个"unique"的临时文件名


5. 操作字符串

字符串长度${#string}

提取子串 ${string:position:length}

子串削除${string#substring}  从$string 的左边截掉第一个匹配的$substring

${string##substring} 从$string 的左边截掉最后一个个匹配的$substring

${string%substring}  从$string 的右边截掉第一个匹配的$substring

${string%%substring} 从$string 的右边截掉最后一个匹配的$substring

子串替换    ${string/substring/replacement}  使用$replacement 来替换第一个匹配的$substring.

${string//substring/replacement} 使用$replacement 来替换所有匹配的$substring.

awk操作字符串 echo | awk '{ print substr("'"${String}"'",3,4)}'

 for name in $(awk 'BEGIN{FS=":"}{print $1}' < "$PASSWORD_FILE" )

域分隔   = :           ^^^^^^

打印出第一个域                 ^^^^^^^^

       从 password 文件中取得输入                 ^^^^^^^^^^^^^^^^^

参数替换 ${parameter-default},${parameter:-default}

$RANDOMBash 的内部函数(并不是常量),这个函数将返回一个范围在 0 - 32767 之间的一个伪随机整数.