注释
1.#
类型系统
2.字符串,使用” "与 ‘ ‘不同,"$var"内的变量仍然会被替换,’$var’则不会
3.变量,也不需要提前声明,直接=,变量类型只是文本字符,系统不会自动辨认为数字。变量作用域:与普通的高级语言不同,函数中声明的变量是全局变量。如果要声明局部变量要使用关键字local
程序结构
6.if …;then
…
elif …;then
…..
if
7.while ;do
…
done
8.for var in … do
…
done
9.case …in
…) …;;
esac
10.select var in ….;do
break;
done
11,here docment
cat << HELP
…….
HELP
12.functionname(){
………………
}
函数参数通过$1 $2来传递
常用函数,运算符
shell的语法简单,本身的内容很少,主要借助于linux的其他工具。
数学运算expr:m=1;m=expr m + 1
>:把STDOUT重定向到一个文件
<:把STDIN重定向到一个文件
>>:把STDOUT追加到一个文件尾
|:从一个程序或进程中获取输出并发送到另一个程序或进程
export命令用于修改shell环境e.g. export name=value
常用特殊变量
?:表示前一个命令的退出状态
$:表示当前系统进程的PID
-:当前shell启动的时候调用的选项
!:在后台运行的上一命令的PID
o:当前脚本文件名
1-9 :调用当前脚本的时候给出的第1-9个命令行参数
open file print raw_input
条件测试部分
test命令用于计算条件的值,包含很多选项,可以用于计算所有条件类型。
e.g.
if ( test $color = "purple" )=if [ $color="purple" ]
if ( test -e filename )=if [ -e filename ]
-d:指定目录存在
-e:指定文件存在
-f:指定文件存在并且是普通文件
-G:文件所有者ID和文件ID相匹配
-nt:前一个文件比后一个文件新 file1 -nt file2
-ot:前一个文件比后一个文件旧
-O:执行命令用户是文件所有者
-r:执行命令用户对文件有读取权限
-s:指定文件存在并且不为空
-w:执行命令用户对文件有写入权限
-x:执行命令用户对文件有执行权限
getopts
该命令用于检查传递给命令行的参数是否有效
语法:getopts optstring name
getopts通过两个变量跟踪所有事情
OPTIND:保存下一个需要处理的参数的索引
OPTARG:如需一个参数,就放到这个变量中
大多数情况,getpots用于在某些类型的循环中检查传递给脚本的选项和参数
e.g.
while getopts "xy:z" name
do
echo "$name" $OPTIND $OPTARG
done
运行 ~/bin/get.sh -xy "one" -z "two"
结果
x 1
y 3 one
z 5 two