1.

read -s password 这样读取时会隐藏

2.

if  alkjdf;then

elif aslkdfje; then

elif akjdf ; then

else

fi

3.

echo -n "adfasdf" -n表示不换行

4.

在做字符串大小比较的时候,注意字符串的顺序

大于号和小于号必须转义,要不然 SHELL 会把它当成重定向符号

大于和小于它们的顺序和 sort 排序是不一样的 在 test 比较测试中,它使用的是 ASCII 顺序,大写字母是小于小写字母的;sort 刚好相反

5.

[[ 。。。 ]]和[ 。。。]的区别

[[… ]] 运算符是[… ]运算符的扩充;[[… ]]能够支持 *,< 、>等符号且不需要转义符

6.


[root@xuegod63 ~]# if [[ $USER == r* ]] ; then echo "hello,$USER" ; else echo $USER

not ; fi

hello,root

注: $USER == r*对比时, r* 表示以 r 开头的任意长度字符串,这样就包括 root

当只有一个[] 方括号时:

[root@xuegod63 ~]# if [ $USER == r* ] ; then echo "hello,$USER" ; else echo $USER not

; fi

root not

#对比时 r* ,就表示两个字符串 r*

也可以这样写:

[root@xuegod63 ~]# if [[ $USER == [a-z]oot ]] ; then echo "hello,$USER" ; else echo

$USER not ; fi

[[ 。。。 ]]和[ 。。。]的区别汇总:

1、所有的字符与逻辑运算符直接用“空格”分开,不能连到一起。

2、在[… ]表达式中,常见的> 、<需要加转义符\,大小比较

3、进行逻辑运算符&& 、||比较时;如果用的[ ]符号,则用在外面,如[… ] && [… ] || [ …]如果

在[…]里面进行逻辑与或的比较,则用-a、-o 进行表示,如[ x = y –a x < z –o x > m ]

4、[[… ]] 运算符只是[… ]运算符的扩充;能够支持< 、>符号运算不需要转义符;它还是以字符串

比较大小。里面支持逻辑运算符 || 、 && , 不再使用-a 、-o

5、[[…]] && 而不是 -a 表示逻辑“与”;用 || 而不是 -o 表示逻辑“或”

6、[[… ]]可以进行算术扩展,而[ ... ]不可以

7、[[...]]能用正则,而[...]不行

8、双括号(( ))用于数学表达式

9、双方括号号[[ ]]用于高级字符串处理,比如“模糊匹配”

10、[[]]对于字符串的比较支持并不好,尤其在使用[[]]和<>符号进行比较的时候会出现返回值错误

的情况。

7.

read

使用-r 参数输,允许让输入中的内容包括: \识别为普通字符。

8.

在做字符串大小比较的时候,注意字符串的顺序

大于号和小于号必须转义,要不然 SHELL 会把它当成重定向符号

大于和小于它们的顺序和 sort 排序是不一样的

在 test 比较测试中,它使用的是 ASCII 顺序,大写字母是小于小写字母的;sort 刚好相反

9.

test测试命令

-s 文件名

如果文件存在且至少有一个

字符则为真

file1 -nt fle2

检查 file1 是否比 file2 新

[ file1 -nt file2 ]

file1 -ot file2

检查 file1 是否比 file2 旧

[ file1 -ot file2 ]

10.

判断第一种:两个条件都为真或有一个为真就执行

if [ 条件判断一 ] && (||) [ 条件判断二 ]; then

命令一

elif [ 条件判断三 ] && (||) [ 条件判断四 ]; then

命令二

else

执行其它

fi

判断第二种

if [条件判断一 -a (-o) 条件判断二 -a (-o) 条件判断三]; then

elif [条件判断三 -a (-o) 条件判断四 ]; then

else

执行其它

fi

判断第三种

if [[条件判断一 && (||) 条件判断二 ]]; then

elif [[ 条件判断三 && (||) 条件判断四 ]]; then

else

执行其它

fi