Linux-shell编程
注意:每个shell脚本文件头部必须得是?#!/bin/sh 一? 变量 1.变量的概念:变量是shell传递数据的-种方法,用来代表每个取值的符号名。 Shell有两类变量:临时变量和永久变量.
临时变量是shell程序内部定义的,其使用范围仅限于定义它的程序,对其它程序不可见。包括:用户自定义变量、位置变量。永久变量是环境变量,其值不随shell脚本的执行结束面消失。?
2.变量的定义:用户定义的变量由字母或下划线开头,由字母、数字或下划线序列组成,并且大小写字母意义不同。变量名长度没有限制。在使用变量值时,要在变量名前加上前缀“$”。一般变量 使用大写字母表示,并且是英文字母开头,赋值号“=”两边应没有空格,如NUM=5、STR="A String" 可以将个命令的执行结果赋值给变量:但是需要使用命令替换符号。 注意: 1.var1=`command`表示把shell命令赋给变量,如var1=`date`(`是Esc下面的一个键,称为反引号) 2.单引号和双引号的区别,“ ”号是会把里面的变量值进行输出,‘ ’是会把内容原封不动输出,不会识别里面的变量。 使用set命令查看所有的变量。 使用unset命令删除指定的变量。 使用$varName调用变量 示例:demo1.sh #!/bin/sh var1=10 echo $var1 var2=‘$var1‘ echo $var2 var3="$var1" echo "$var3..." var4=`date` echo $var4 unset var3 echo "$var3..." echo `set | grep var4` 3.占位变量:在Shell里面还有俩种特殊的变量,一种是占位变量,还有种是特殊的占位变量,在我们编写Shell的时候十分的常用,一定要熟悉他们。 占位变量示例: ls -I file1 file2 file3... (n范围=1-9)在代码里使用$0-9进行替代 特殊的占位变量: $* //这个程序的所有参数 $# //这个程序的参数个数 $$ //这个程序的PID $! //执行上一个后台命令的PID $? 执行上一个命令的返回值 $(0-9) 显示位置变量 示例:demo2.sh #! /bin/sh echo $0 echo $1 echo $* echo $# echo $$ echo $? echo $! echo $3 运行:[[email?protected] demo]# ./demo2.sh var1 var2 var3? 查看结果? ? 二? shell运算命令:expr命令。 注意点: 1 只能对对整数进行运算,无法对浮点数进行运算。 ? 2?expr的运算必须用空格间隔开。 3?* 表示转义字符。 4?保持先算乘除后算加减,如果需要优先运算则需要加命令替换符。 5 也可以对变量进行运算操作。 示例: [[email?protected] demo]# expr 10 + 5 15 [[email?protected] demo]# expr 10 - 5 5 [[email?protected] demo]# expr 10 / 3 3 [[email?protected] demo]# expr 10 * 3 30 [[email?protected] demo]# expr 10 - 3 * 2 4 [[email?protected] demo]# expr `expr 10 - 3` * 2 14 [[email?protected] demo]# num=30 [[email?protected] demo]# echo `expr $num + 8` 38 ? 三? shell判断命令:test命令 使用test命令可以对文件、字符串等进行测试,一般配合控制语句使用,不应该单独使用。 如下: 字符串测试: test str1=str2 测试字符串是舌相等 test str1!=str2 测试字符串是否不相等 test str1 测试字符串是否不为空 test -n str1 测试字符串是否不为空 test -z str1 测试字符串是否为空 int测试: ?test int1 -eq int2 测试整数是否相等 test int1 -ne int2 测试整数是否不相等 test int1 -ge int2 测试int1是否>=int2 test int1 -gt int2 测试int1是否>int2 test int1 -le int2 测试int1是否< =int2 test int1 -It int2 测试int1是否<int2 文件测试 ? ?test -d file 指定文件是否目录 test -f file 指定文件是否常规文件 test -x file 指定文件是否可执行 test -r flle 指定文件是否可读 test -w file 指定文件是否写 test -a file 指定文件是否存在 test -s file 文件的大小是否非0 ? 四? if语句 if语句语法格式:if test语句 then ... elif test语句 then ... else ... fi 变量判断语句可用 [] 进行简化,如 test -d $1 等价于 [ -d $1 ] 注意:简化写法的句式非常标准也非常重要,句式为 if"空格"["空格"-d"空格"$1"空格"] ,其中空格必不可少 示例:if-demo.sh #! /bin/sh file=/root/Desktop/demo/if-demo.sh if [ -d $file ] then echo ‘is a directory‘ elif [ -f $file ] then echo ‘is a file‘ else echo ‘unknow type‘ fi ? 五? 逻辑操作符: -a 逻辑与 -o 逻辑或 注意:-a 或 -o 必须配合test或是if来使用 ? 六? for循环语句: for ... done语法格式: for 变量 in 名字表 do 语句块 done ? 七? select循环语句: select ... done 语法格式: select 变量 in 列表 do 语句块 done ? 八 case语句: case语句语法: case 参数 in 值1)? 语句块;; ... 值n)? 语句块;; esac 注意:语句块一定要以 ;; 结束 ? 九? while循环 while循环语句语法: while 条件 do 语句块 done (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |