1 "$var" and '$var '
$ var=test
$ echo '$var'
$var
$ echo "$var"
test
2 () and {}
$ ls
extern tps win
$ echo $(ls)
extern tps win
[ $chanid -lt 10 ] || { echo "chanid should be less than 10"; exit 1; }
A,()只是对一串命令重新开一个子shell进行执行
B,{}对一串命令在当前shell执行
C,()和{}都是把一串的命令放在括号里面,并且命令之间用;号隔开
D,()最后一个命令可以不用分号
E,{}最后一个命令要用分号
F,{}的第一个命令和左括号之间必须要有一个空格
G,()里的各命令不必和括号有空格
H,()和{}中括号里面的某个命令的重定向只影响该命令,但括号外的重定向则影响到括号里的所有命令
3 [ ] 和 test 和 [[ ]]
test 等同于 [ ]
可用于判断某个条件是否为真。可用于 字符串,数值和文件的测试。
test的三个基本作用是判断文件、判断字符串、判断整数。支持使用 ”与或非“ 将表达式连接起来。
test中可用的比较运算符只有==和!=,两者都是用于字符串比较的,不可用于整数比较,整数比较只能使用-eq, -gt这种形式。
[[ ]] 这是内置在shell中的一个命令,它就比刚才说的test强大的多了。支持字符串的模式匹配(使用=~操作符时甚至支持shell的正则表达 式)。逻辑组合可以不使用test的-a,-o而使用&& || 。(-a and -o or)、
4 shell 重定向
>/dev/null 2>&1 标准输出就会不再存在
ssh-copy-id -p 5122 root@$NE > /dev/null 2>&1
默认标准输出 1 输出到 /dev/null
错误输出 2 输出到 1 (被重定向到/dev/null)
5.命令行的提示符 PS1
PS1='${PWD}'"($(basename WORK)) $ "