shell
编译shell
创建:vi 文件名.sh
运行:sh 文件名.sh(注意将属性改为可运行脚本,“chmod +x 文件名.sh”)
shell内编程
以 “ #!/bin/sh” 开头
数据类型
arr_number=(1 2 3 4 5) //数值类型的数组,一对括号表示数组,数组中元素用空格隔开;
arr_string=(“abc” “edf” “sss”)或者arr_string=(‘abc’ ‘edf’ ‘sss’)
其中在shell里面读取某个变量的值是前面必须加**$**。
单引号和双引号区别
单引号不会解析字符串中以$打头的变量;
双引号会解析字符串中以$打头的变量;
eg:#!/bin/sh
TIME=‘date + %Y%m%d’ #格式化输出时间
echo ‘the time is $TIME’ (原样输出:the time is $TIME)
echo “the time is $TIME” (解析字符串:the time is 20200116)
算术运算
eg:expr 3+5 //3+5
expr 3 + 5 //8
expr 3 / 5 //0
expr 3 * 5 //15
expr ‘expr 12 - 7’ / 3 //1
默认变量
$#:传入脚本命令行参数个数;
$*:所有命令行的参数值。在各个参数值之间留有空格;
$0:命令本身(shell文件名);
$1:第一个命令行参数;
$2:第二个命令行参数;
if - else(shell里编写循环)
-gt:大于
-lt:小于
-eq:等于
-ne:不等于
eg:
#!/bin/sh
if [ $# -lt 3 ];then
echo “parameters number is not correct”
else
echo “OK”
if [ $1 -lt $2 ];then
max=$2;
else
max=$1
fi
if [ $max -lt $3 ];then
max=$3
else
fi
echo “max value is:$max”
fi
当输入的参数不足三个时:
while
#!/bin/sh
i=1
sum=0
while [ $i -le 100 ]
do
sum=‘expr $sum + $i’
i=‘expr $i + 1’
done
echo $sum
for
sum=0
for ((i=0;i<=100;i++))
do
sum=‘expr $sum + $1’
done
echo $sum