shell脚本基本格式:
#!/bin/bash
echo $JAVA_HOME
echo "Hello World!!!"
sh bash ./
变量:
#!/bin/bash
a=1
b="hello"
c=2.5
d=`ls -l`
readonly a
unset a
echo '$b'
echo "你好,常量a是$a,变量b的值是${b},变量c是小数,值为$c"
#将反引号内的代码获取的结果输出
echo $d
#获取字符串长度
echo ${#b}
#从字符串b下标为n开始截取m个字符
echo ${b:n:m}
#查找字符所在的位置
echo `expr index "${d}" param`
字符串http://www.aaa.com/root/123.htm
#取出www.aaa.com/root/123.htm
a="http://www.aaa.com/root/123.htm"
b="www.aaa.com/root/123.htm"
echo ${a:7:${#b}}
数组:
#!/bin/bash
a=(1 2 3 4 5 6)
a[7]=12
echo ${a[3]}
echo ${a[7]}
#获取所有元素
echo ${a[@]}
#所有元素的个数
echo ${#a[*]}
#第七位的长度
echo ${#a[7]}
#遍历数组
#增强for
for i in ${a[@]}
do
echo ${i}
done
#fori
for((i=0;i<=7;i++))
do
echo ${a[i]}
done
case 值 in
1)语句
;;
2)语句
;;
esac
注释:(EOF为开头和结尾)
#单行注释
:<<EOF
echo "hello"
EOF
传参:
./args.sh hello nihao zaijian youshinihao
#传递第1个参数
echo $1
#传递参数的数量
echo $#
#传递的所有参数
echo $*
#报错数
echo $?
数值运算:
#!/bin/bash
a=1
b=2
echo `expr $a + $b`
echo `expr $a - $b`
echo `expr $a \* $b`
echo `expr $a / $b`
echo `expr $a % $b`
if [ $a == $b ]
then echo "a==b"
elif [ $a != $b ]
then echo "a!=b"
fi
num=$[1+1]
不换行:
echo -n
echo -e "字符串\c" -e开启转义
判断:
- 是否存在:-e 文件名
- 是否可读:-r 文件名
- 是否可写:-w 文件名
- 是否可执行:-x 文件名
- 是否是目录:-d 文件名
- 是否是文件:-f 文件名
计时:
TMOUT=3
read -p "请输入任意值:" n
if [ $? -eq 0 ]
then
echo $0
else
echo "3s已过"
fi
函数:
#无返回值函数
print(){
echo "hello"
}
print
#有返回值
add(){
return $[$1+$2]
}
print
add $1 $2
echo $?
定时:
详细看菜鸟教程
https://www.runoob.com/w3cnote/linux-crontab-tasks.html