1.注释符号“#”
“#”用于注释
“#!”用于说明用什么脚本解释器(bash、zsh等等)
2.命令分隔符“;”
例子:
#!/bin/bash
echo hello; echo there
filename=ttt.sh
if [ -r "$filename" ]; then # 注意: "if"和"then"需要分隔
echo "File $filename exists."; cp $filename $filename.bak
else
echo "File $filename not found."; touch $filename
fi; echo "File test complete."
3.终止case符号(”;;”)
4.点号”.”相当于source命令
5.引号
双引号(”):”STRING” 阻止(解释)STRING中大部分特殊的字符
单引号(‘):’STRING’ 将会阻止STRING中所有特殊字符的解释
5.斜线和反斜线
“\”:转义字符,例如:”\n”
“/”:路径分隔符,例如:/home/shiyanlou/Code/
6.反引号(`)
$ cp `mkdir back` test.sh back #反引号中的命令会先执行
7.冒号(:)
1.空命令 “NOP”
2.“:”命令是一个bash的内建命令,它的退出码(exit status)是(0)
作用:
one:作为占位符
if [ $condition -gt 0 ]
then : # 什么都不做,退出分支
two:变量扩展/子串替换
$ : > test.sh # 文件“test.sh”现在被清空了
# 与 cat /dev/null > test.sh 的作用相同
与">>"连用对被操作文件无影响
与">"连用对被操作文件进行清空操作
8.小括号“( )”
作用:
one:命令组
申请一个局部执行命令的shell单独运行
two:初始化数组变量
例子:arr=(1 2 3 4 5)\
9.大括号“{}”
作用:
one:文件名扩展
保存多个扩展名,例如:cp t.{txt,back}
two:创建匿名函数
#!/bin/bash
a=123
{ a=321; }
echo "a = $a"
$bash test #输出321
10.中括号 “[]”
作用:
one:条件测试表达式
if [5 -lt 10]
then
echo "a = $a"
else
echo "a > 10"
fi
two:数组元素
#!/bin/bash
arr=(12 22 32)
arr[0]=10
echo ${arr[0]}
#输出arr这个数组的第一个元素;
11.破折号“-”
作用:
one:选项,前缀
[a -eq b]
two:用于重定向stdin或stdout
例子:备份24小时之内被修改过的文件
#!/bin/bash
BACKUPFILE=backup-$(date +%m-%d-%Y)
# 在备份文件中嵌入时间.
archive=${1:-$BACKUPFILE}
# 如果在命令行中没有指定备份文件的文件名,
#+ 那么将默认使用"backup-MM-DD-YYYY.tar.gz".
tar cvf - `find . -mtime -1 -type f -print` > $archive.tar
gzip $archive.tar
echo "Directory $PWD backed up in archive file \"$archive.tar.gz\"."
exit 0