- 退出状态
bash中的内建命令虽然不创建新的进程,但也会有Exit Status,通常也用0表示成功非零表示失败,可以用特殊变量$?读出
- 命令代换:`或$()
user@ae01:~$ echo `date`
Sat Oct :: CST
user@ae01:~$ user@ae01:~$ echo $(date)
Sat Oct :: CST
user@ae01:~$
- 算术代换:$(())
user@ae01:~$ echo $((+))
user@ae01:~$ i=
user@ae01:~$ echo $(($i+)) user@ae01:~$ echo $((i+))
- 单引号
Shell脚本中的单引号和双引号一样都是字符串的界定符,而不是字符的界定符。单引号用于保持引号内所有字符的字面值,即使引号内的\和回车也不例外,但是字符串中不能出现单引号。如果引号没有配对就输入回车,Shell会给出续行提示符,要求用户把引号配上对。例如:user@ae01:~$ echo 'hello word
> '
hello word user@ae01:~$user@ae01:~$ echo 'hello \
> word'
hello \
word
user@ae01:~$
- 双引号
双引号用于保持引号内所有字符的字面值(回车也不例外),但以下情况除外:- $加变量名可以取变量的值
- ``仍表示命令替换
- \$ 表示$的字面值
- \` 表示`的字面值
- \" 表示"的字面值
- \\ 表示\的字面值
user@ae01:~$ echo $HOME
/home/user
user@ae01:~$ echo "`date`"
Sat Oct :: CST
user@ae01:~$ echo "I'd say: \"Go for it\""
I'd say: "Go for it"
user@ae01:~$ echo "\"
> "
" user@ae01:~$ echo "\\"
\
user@ae01:~$
- bash 参数
- $0 代表脚本在执行时的自身文件名;像上面执行时用的是相对路径,即显示执行时的$0为"./Parameter";若执行时用绝对路径“/home/kashu/Parameter”,则$0就会显示为“/home/kashu/Parameter”
- $# 代表所有参数的总数量
- $@ 代表 "$1","$2", "$3", "$4" 等等,即代表每个独立的变量参数,$1 代表第一个变量参数, $2 代表第二个变量参数
-
echo "$# parameters"; echo -e \\nUsing '$*';
for p in $*;
do
echo "[$p]";
done; echo -e \\nUsing '"$*"';
for p in "$*";
do
echo "[$p]";
done; echo -e \\nUsing '$@';
for p in $@;
do
echo "[$p]";
done; echo -e \\nUsing '"$@"';
for p in "$@";
do
echo "[$p]";
doneuser@ae01:~$ ./test.sh "2 3"
parameters Using $*
[]
[]
[] Using "$*"
[ ] Using $@
[]
[]
[] Using "$@"
[]
[ ]