Linux-shell编程
Posted programmlover
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux-shell编程相关的知识,希望对你有一定的参考价值。
注意:每个shell脚本文件头部必须得是 #!/bin/sh
一 变量
1.变量的概念:变量是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
以上是关于Linux-shell编程的主要内容,如果未能解决你的问题,请参考以下文章