Shell脚本编程基础
第一步:建立Shell文件
touch pp.sh
第二步: 赋予Shell文件执行权限
chmod 740 pp.sh
**第三步:**执行shell文件
bash pp.sh
一、变量
在shell脚本中通过``符号进行命令置换,将其输出赋值给变量。
1、用户自定义变量
COUNT=1#用户自定义变量
echo $COUNT
DATE=`date`#命令置换
echo $DATE
2、位置变量
位置变量也是预定义变量,但是跟位置有关系
COUNT=1#用户自定义变量
echo $COUNT
DATE=`date`#命令置换
echo $DATE
echo "0......$0"
echo "1......$1"
echo "10......${10}"
3、环境变量
COUNT=1#用户自定义变量
echo $COUNT
DATE=`date`#命令置换
echo $DATE
echo "0......$0"
echo "1......$1"
echo "10......${10}"
echo $home
二、shell语句
1、说明性语句(注释)
#号开始
2、常用功能性语句
- 任意的shell命令
- 用户程序
- 其他shell程序
read语句
read var#从标准输入读入一行,赋值给var
read var1 var2 var3#从读入行的第一个单词赋值给var1,第二个给var2,其他剩余的给var3
#如果read语句执行时无输入,程序等待输入
expr语句
$expr 12+5/*3#用于进行简单的加减乘除整数运算
#example 1
read var1 var2
num=`expr $val1+$val2`
echo $sum
test语句
test语句可测试三种对象:
- 字符串
- 整数
- 文件属性
#字符串测试
test "$answer"="yes" #变量answer的值是否为字符串yes
echo $?#0表示成立,1表示不成立
#整数测试
test $num -eq 10#变量num的值是否为整数18
#文件测试
test -d tmp#测试文件名是否为一个目录
3、结构性语句
条件测试语句
#条件语句
#判断是否为文件
if test -f $1
then
echo "$1i is a file"
else
echo "$1i is not a file"
fi
#条件语句
#elif
read var
if test $val -eq 0#if [ $val -eq 0 ]
then
echo "val=0"
elif test $val -gt 0
then
echo "val>0"
else
echo "val<0"
fi
多路分支语句
#多路分支语句
read val
val=`expr $val / 10`
case $val in
8|9|10)
echo "A"
;;
6|7)
echo "B"
;;
*)
echo "C"
;;
esac
循环语句
#循环语句for
#用法一
for val in 1 2 3 4 5
do
echo $val
done
#用法二
for ((val=1; val <=5; val=$val+1))
do
echo $val
done
#用法三
for file in `ls`;
#循环语句while
#用法一
NUM=0
while [ $NUM -lt 10 ]
do
e cho "********"
NUM=`expr $NUM+1`
done
#用法二
while (($NUM < 10))
do
e cho "********"
NUM=`expr $NUM+1`
done
三、shell函数
1、函数的定义
fun()
{
echo "hello world"
}
fun#函数调用
2、函数传参
fun()
{
A=$1
B=$2
C=$3
echo "hello world"
NUM=`expr $A+$B+$C`
echo "NUM=$NUM"
}
fun 1 2 3#函数传参数
3、函数返回值
fun()
{
A=$1
B=$2
C=$3
echo "hello world"
NUM=`expr $A+$B+$C`
return $NUM
}
fun 1 2 3#函数传参数
echo "\$?=$?"
4、函数作用域
#shell脚本函数的变量作用域默认为全局,程序文件里
fun()
{
A=$1
B=$2
C=$3
echo "hello world"
NUM=`expr $A+$B+$C`
return $NUM
}
fun 1 2 3#函数传参数
echo "\$?=$?"
echo "A=$A"
echo "B=$B"
echo "C=$C"
#通过下面方式实现作用域规定到局部
fun()
{
local A=$1
B=$2
C=$3
echo "hello world"
NUM=`expr $A+$B+$C`
return $NUM
}
fun 1 2 3#函数传参数
echo "\$?=$?"
echo "A=$A"
echo "B=$B"
echo "C=$C"