Linux小白日记(三)shell脚本
Shell是linu系统重要的组成部分之一,也是我们平常得力的助手。
Shell语法
1.所有shell脚本的第一行的固定格式,#!/bin/sh(bash);这其实是告诉机器如何解析这个脚本。
2.shell变量
shell中的变量没有类型一说,所以不用申明,直接赋值就行,赋值格式:greet=hello,即把hello赋值给greet。在引用变量时,变量前需要加美元符$,引用格式:echo “$greet”,或者是echo “${greet}”。
特殊用法例子:
echo:是输出的意思;类似于printf,可以在linu命令行直接输出;
a=1
b=2
c=hello
echo “a=”$a
echo “b=”$b
echo $c
d=$((a+b)) #d=a+b=3
echo “a+b=”$d #a+b=d=3
shell变量表达式
$[#string] #判断字符串长度
$[string:number1:number2] #截取字符串从number1到number2之间的字符
$[string#str] #从开头删除string变量中str的子字符串
$[string%ing] #从结尾删除string变量中ing的子字符串
3.shell中的判断(test和[])
test和[]都能用于判断,不同的是[]需要前后里外都要加空格,不然运行脚本时会报错;
几个常用的参数:
-lt 小于 -a 并且
-le 小于等于 -o 或者
-gt 大于 ! 非
-ge 大于等于
-eq 等于
-ne 不等于
举个例子
#!/bin/bash
if test $1 –gt 0
then
echo “$1是正数”
fi
#!/bin/bash
if [ $1 –gt 0 ]
then
echo “$1是正数”
fi
4.shell 中的if,case语句
如3的例子,if的格式是:
if+判断表达式
then
elif+表达式
then
…
fi
先介绍几个参数:
-f 存在且是普通文件
-d 存在且是目录
-s 存在且字节数大于0
-r 存在且可读
-w 存在且可写
-x 存在且可执行
举个例子:
if [ -d mydoc ]
then
cdmydoc
touch1.doc
fi
#如果存在mydoc,则进入mydoc创建一个1.doc的文件
#脚本运行完毕后都会退回当前目录,所以虽然cdmydoc,但是运行结束后还是会返回当前目录的。
case语句格式:
case ‘$1’ in
[A-Z] ) echo “capital letter”;;
[a-z]) echo “lowercase letter”;;
* ) echo “unknown”;;
esac
如果出现输出不正确则要修改环境变量:esport LANG=C。
5.shell中的循环语句
shell中的循环语句与c中的循环语句十分的相似;
a.while语句
格式:
while条件
do
语句
done
举个例子
#!/bin/bash
i=$1
j=$2
while [ $i -le $j ]
do
sum=$((i+sum))
((i++))
done
echo “sum is ”$sum
b.until语句
格式:
unti+条件
do
语句
done
举个例子:
i=$1
j=$2
sum=0
until [ $1 –eq $j ]
do
sum=$((sum+i))
((i++))
done
echo “sum is ”$sum
c.for 语句
格式:
for +变量in列表
do
语句
done
举个例子:
#!/bin/bash
for x in $(sep 1 100);
do
echo $x
done
#输出1-100
6.shell中的函数结构
[function] funcname()
{
语句
[return 返回值]
}
返回值是可选项,如果没有显示return,则是默认返回最后一条语句执行的。