不看笔记,长时间不用自己都忘了,还是得经常看看笔记啊。
一个简单的shell程序
shell结构1、#!指定执行脚本的shell2、#注释行3、命令和控制结构创建shell程序的步骤第一步:创建一个包含命令和控制结构的文件第二步:修改这个文件的权限使它可以执行。 使用chmod u+x第三步:执行shell sh /test/example.sh Shell变量变量:是shell传递数据的一种方法,用来代表每个取值的符号名shell有两类变量:临时变量和永久变量临时变量是shell程序内部定义的,其使用范围仅限于定义它的程序,对其它程序不可见。包括 用户自定义变量、位置变量。永久变量是环境变量,其值不随shell脚本的执行结束而消失。 用户自定义变量用户定义的变量有字母或下划线开头,由字母,数字或下划线序列组成,并且大小写字母意义不 同,永久变量长度没有限制。在使用变量值时,要在变量名前加上前缀“$” 设置和使用变量设置变量:习惯上用大写字母来命名变量,变量名只能以字母表中的字符开头,不能用数字。变量赋值:赋值号”=”两边应没有空格定时赋值,NUM=1将一个命令的执行结果赋给变量,如:TIME=`date`将一个变量赋给另一个变量,如:A=$B使用echo 命令查看变量值。例如:echo $A列出所有变量:set包含多个字的变量$NAME=Mike Ron运行时出错,应该为:$NAME=”Mike Ron”或$NAME=’Mike Ron’单引号和双引号的区别是,单引号里的变量不会被解析。删除变量:unset NAME 位置变量和特殊变量shell解释执行用户命令时,将命令行的第一个部分作为命令名,其他部分作为参数。由出现在 命令行上的位置确定的参数称为位置参数。例如:ls -l file1 file2 file3$0这个程序的文件名ls -l$n这个程序的第n个参数值,n=1–9 特殊变量$*这个程序的所有参数$#这个程序参数的个数$$这个程序的PID$!执行上一个后台命令的PID$?执行上一个命令的返回值 0代表成功 非0代表不成功 shell命令read命令:从键盘读入数据,赋给变量如:red USERNAMEread的例子:#!/bin/shread first second thirdecho “您输入的第一个参数$first”echo “您输入的第一个参数$second”echo “您输入的第一个参数$third” expr命令shell变量的算术运算expr命令:对整数型变量进行算术运算例如:expr 3 + 5 #加号左右必须有空格expr $varl – 5expr $v1 / $v2expr $v1 \* 10复杂的expr命令复杂的运算 expr ` expr 5 + 7 ` / $var1将运算结果赋予变量:var4=` expr $va1 / $var2 `例:#!/bin/sha=10b=20c=30v1=`expr $a + $b + $c`echo $v1v2=`expr $c / $b`echo $v2v3=`$a \* $b`v4=`expr $a + $c / $b`echo $v4 变量测试语句变量测试语句:用户测试变量是否相等、是否为空、文件类型等格式:test 测试条件测试范围:整数、字符串、文件字符串测试:test str1=str2 测试字符串是否相等test str1!=str2 测试字符串是否不相等test str1 测试字符串是否不为空test -n str1 测试字符串是否不为空test -z str1 测试字符串是否为空整数测试:test init1 -eq int2 测试整数是否相等test init1 -ge int2 测试int1是否>=int2test init1 -gt int2 测试int1是否>int2test init1 -le int2 测试int1是否<=int2test init1 -lt int2 测试int1是否<int2test init1 -ne int2 测试整数是否不相等文件测试test -d file 指定文件是否目录test -f file 指定文件是否常规文件test -x file 指定文件是否可执行test -r file 指定文件是否可读test -w file 指定文件是否可写test -a file 指定文件是否存在test -s file 指定文件是否非0变量测试语句一般不单独使用,一般作为if语句的测试条件,如:if test -d $1 then…..fi变量测试语句可用[]进行简化,如test -d $1 等价于[-d $1] #!/bin/sh#比较两个字符串是否相等的程序read -p “请输入第一个字符串:” str1read -p “请输入第二个字符串:” str2 if [ -n $str1 ] ; thenecho “您输入的第一个字符串不为空,值为:” $str1elseecho “您输入的第一个字符串为空”fi if [ -n $str2 ] ; thenecho “您输入的第二个字符串不为空,值为:” $str2elseecho “您输入的第二个字符串为空”fi if test $str1 = $str2 ; thenecho “两个字符串相等”elseecho “两个字符串不相等”fi 1、查看当前系统的环境变量和自己定义的变量set命令2、删除一个变量unset 变量名例如:unset NAME