1.1shell脚本创建
下面讲解创建shell脚本,并赋予脚本可执行权限
写一个脚本实现创建文件夹(如果文件夹不存在)
#mkdir.sh
if [ ! -d html ];then
mkdir html
elif [ ! -d html1 ] ;then
mkdir html1
else
echo dir exist
fi
赋予脚本可执行权限: chmod u+x mkdir.sh
执行 ./mkdir.sh
使用 echo $? 可以查看脚本执行是否出错
如果返回0 表示脚本成功,否知表示失败
1.2带参数执行脚本
创建一个带参数的脚本
# mkhtml.sh
# 判断目录是不是已经存在,如果不存在则创建,存在则输出“dir exist”
dirname=$1
echo "the dir name is $dirname"
#判断目录存在
if [ ! -d $dirname ];then
mkdir $dirname
else
echo dir exist
fi
执行如下: ./mkhtml.sh html
对参数数量进行判断,如果传参数为多个则会报错,这里控制参数只能为1个
#!/bin/bash
# 判断传入的参数的个数是不是一个
if [ ! $# -eq 1 ];then
echo param error!
exit 1
fi
# 判断目录是不是已经存在,如果不存在则创建,存在则输出“dir exist”
dirname=$1
echo "the dir name is $dirname"
#判断目录存在
if [ ! -d $dirname ];then
mkdir $dirname
else
echo dir exist
fi
实现两个参数,为两个目录
if [ ! $# -eq 2 ];then
echo param error! 参数不为两个
exit 1
fi
# 判断目录是不是已经存在,如果不存在则创建,存在则输出“dir exist”
dirname=$1
dirname1=$2
#判断是否目录存在
if [ ! -d $dirname ];then
mkdir $dirname
elif [ ! -d $dirname1 ];then
echo " $dirname 存在 不创建 "
mkdir $dirname1
else
echo $dirname1 exist
echo $dirname exist
fi
1.3讲解重定向
这里讲解下,linux里面0 1 2是一个文件描述符
0 表示标准输入< << 1表示标准输出 > >> 2 表示标准错误输出
前面有说过 >表示覆盖写 >>表示追加
echo $JAVA_HOME 1>txt
echo $JAVA_HOME >txt
这两个是一样的
关于2>&1的含义
./mkdir.sh html >txt 2>&1 &
- 本来1----->屏幕 (1指向屏幕)
- 执行>txt后, 1----->txt(1指向txt)
- 执行2>&1后, 2----->1 (2指向1,而1指向txt,因此2也指向了txt)
./mkdir.sh html 2>&1 >txt &
- 本来1----->屏幕 (1指向屏幕)
- 执行2>&1后, 2----->1 (2指向1,而1指向屏幕,因此2也指向了屏幕)
- 执行>txt 后, 1----->txt (1指向txt ,2还是指向屏幕)
shell脚本函数
#!/bin/bash
functionTest(){
a=2
b=3
var1=3
echo '测试函数'
if [ -f "bintest" ];then touch bintest
elif [ -x "/bin/ls" ];then echo "存在/bin/ls"
else echo "ls"
fi
if [ -n "$var1" ];then echo "$var 存在值"
else echo "ls"
fi
if [ $a==$b ];then echo "$a==$b"
else echo '函数结束'
fi
}
functionTest
给脚本赋予执行权限
chmod +x testFunction.sh
./testFunction.sh 运行脚本