1 .特殊字符 (转义字符\可以让这些均无用)
: true ()站位符
while :
do
echo a;
done
$ 取值符
‘ ’ 忽略下个 '之前的所有特殊字符
" " 除 $ \ '外
root@ubuntu:~# echo '$(echo a)'
$(echo a)
root@ubuntu:~# echo "$(echo a)"
a
` ` `cat` == $(cat) 建议后一种 ( $(cat) 与 ${cat}区别 )
( ) 命令分组 ,内部的命令会在一个子shell 中执行
(()) 整数扩展运算a=10;((b=a++));
{ } a.单独使用时作为大括号扩展 a.{1..5}==a.1 a.2 a.3 a.5
root@ubuntu:~# echo a{5..1}
a5 a4 a3 a2 a1
root@ubuntu:~# echo a.{n..a}
a.n a.m a.l a.k a.j a.i a.h a.g a.f a.e a.d a.c a.b a.a
b.匿名函数,不在子shell中执行与小括号区别
[ ] 就是命令test [_ _]格式 留空格
root@ubuntu:~# [ -d /root ]
root@ubuntu:~# echo $?
0
root@ubuntu:~# [ -d /root1 ]
root@ubuntu:~# echo $?
1
root@ubuntu:~#
root@ubuntu:~# [ 1 -gt 0 ]&&echo ">"
>
root@ubuntu:~# [ 1 -lt 0 ]&&echo ">"
root@ubuntu:~#
root@ubuntu:~# { if [ 1 -gt 0 ]; then echo 1;else echo 0 ;fi }
1
root@ubuntu:~# { if [ 1 -lt 0 ]; then echo 1;else echo 0 ;fi }
0
[[ ]] 是bash内置的命令
2.替代字符
~ home 目录
~- $OLDPWD
~+ $PWD
~root
~wang
root@ubuntu:/home/wang# echo ~
/root
root@ubuntu:/home/wang# echo ~wang
/home/wang
root@ubuntu:/home/wang# echo ~-
/root
root@ubuntu:/home/wang# echo ~+
/home/wang
root@ubuntu:/home/wang# echo $PWD
/home/wang
root@ubuntu:/home/wang# echo $OLDPWD
/root
3.文件替代
root@ubuntu:/home/wang/web# ls lib?ml*
libxml2-devel-2.6.26-2.1.2.8.i386.rpm
4 .shell 扩展 (顺序)
1.brace expansion(花括号扩展){1.10}
2.tilde expansion(代字符号扩展)~
3.parameter expansion(参量扩展)${var}
4.command substitution(命令替换)$(date)
5.arithmetic expansion(算术扩展)$((1+2))
6.process substitution(过程替换)echo <(:) (??????????)
7.word splitting(词分离)
8.file name expansion(路径名扩展)*?
9.quote removal (去引号)
5.参数类
testargs()
{
echo "$@"
}
testargs a b c d e f
打印 a b c d e f