1. shell脚本基础概念
1.1概念
1.2创建和执行
2.变量
2.1用户自定义变量
2.2位置变量
2.3预定义变量
2.4环境变量
3.功能语句
3.1说明性语句
3.2功能性语句
3.2.1 read
3.2.2 expr
例子:
#!/bin/bash
I=0
#I=`expr $I + 1`
((++I ))
echo $I
read -p "input: " a b c d
#NUM=`expr $a \* $b + $c - $d / $b`
((NUM=a*b+c-d/b))
#NUM=$((a*b+c-d/b))
echo $NUM
也可以用(())进行数学运算
3.2.3 let
3.2.4 test
#!/bin/bash
#测试字符串
VAR="hello"
test $VAR = "hello"
echo $?
test $VAR != "hello"
echo $?
test -z $VAR
echo $?
test -n $VAR
echo $?
#测试整数
test 10 -eq 5
echo $?
test 10 -ne 5
echo $?
test 10 -gt 5
echo $?
test 10 -lt 5
echo $?
#测试文件属性
read -p "input filename: " FILE
test -e $FILE
echo $?
test -f $FILE
echo $?
test -d $FILE
echo $?
3.3结构性语句
3.3.1 if语句
if 条件
then
命令表1
else
命令表2
fi
if 条件1
then
命令表1
elif 条件2
then
命令表2
fi
if 条件1
then
if 条件2
then
命令表1
fi
else
命令表2
fi
例子:
3.3.2 case语句
case 变量 in
模式1)
命令表1
;;
模式2)
命令表2
;;
*)
命令表n
;;
esac
例子:
#!/bin/bash
read -p "input score: " SCORE
case $SCORE in
100|9[0-9])
echo "A"
;;
8[0-9])
echo "B"
;;
7[0-9])
echo "C"
;;
6[0-9])
echo "D"
;;
[0-9]|[1-5][0-9])
echo "lost"
;;
*)
echo "input err"
;;
esac
3.3.3 for循环
for 变量名 in 单词表
do
命令表
done
例子:
3.3.4 while
while 命令或表达式
do
命令表
done
#!/bin/bash
i=1
SUM=0
while test $i -le 10
do
#((SUM=SUM+i))
#SUM=`expr $SUM + $i`
let SUM=SUM+i
((i++))
done
echo $SUM
SUM=0
##################################
for ((i=1;i<=10;i++))
do
((SUM=SUM+i))
done
echo $SUM
3.3.5 循环控制语句
#!/bin/bash
for ((i=0;i<5;i++))
do
for((j=0;j<5;j++))
do
if [ $j -eq 3 ]
then
#break 1
#break 2
#continue 1
continue 2
fi
echo "$i : $j" #4 2
done
done
4.数组
4.1数组的赋值
4.2数组的调用
#!/bin/bash
read -a arr
MIN=${arr[0]}
n=${#arr[@]}
for ((i=0;i<n;i++))
do
if [ $MIN -gt ${arr[i]} ]
then
MIN=${arr[i]}
fi
done
echo $MIN
#!/bin/bash
if [ -d aa ] #如果当前目录下有aa目录就删除然后创建
then
rm -r aa
fi
mkdir aa
num=0
filelist=`ls` #将当前目录下所有文件赋值给filelist变量
for file in $filelist #for file in * #用file遍历当前目录下所有文件
do
if [ -f $file ] #如果是普通文件就复制到aa目录下
then
cp $file ./aa
((num++)) #计算文件个数
fi
done
echo $num