shell编程第八弹--实战(1)
shell编程第八弹–实战(1)
一、文件操作
1 #!/bin/bash
2
3 #创建文件夹
4 #检查文件夹是否存在
5 if [ ! -d "wz" ];then
6 mkdir wz
7 else
8 echo "dictory is exist"
9 fi
10
11 #拷贝所有的文件到文件夹
12
13 if [ ! -f "wz/2.sh" ];then
14 cp *.sh wz
15 else
16 echo "error"
17 fi
注:
-e 判断对象是否存在
-d 判断对象是否存在,并且为目录
-f 判断对象是否存在,并且为常规文件
-L 判断对象是否存在,并且为符号链接
-h 判断对象是否存在,并且为软链接
-s 判断对象是否存在,并且长度不为0
-r 判断对象是否存在,并且可读
-w 判断对象是否存在,并且可写
-x 判断对象是否存在,并且可执行
-O 判断对象是否存在,并且属于当前用户
-G 判断对象是否存在,并且属于当前用户组
-nt 判断file1是否比file2新 [ "/data/file1" -nt "/data/file2" ]
-ot 判断file1是否比file2旧 [ "/data/file1" -ot "/data/file2" ]
二、 判断‘abcd’是否在hello.sh中
1 #!/bin/bash
2
3 #判断‘abcd’是否在hello.sh中
4 if grep "abcd" hello.sh > /dev/null 2>&1
5 then
6 echo "exist"
7 else
8 echo "no exist"
9 fi
注意:
/dev/null代表linux的空设备文件,所有往这个文件里面写入的内容都会丢失,俗称“黑洞”
& 表示等同于的意思,2>&1,表示2的输出重定向等同于1
1、2>/dev/null意思就是把错误输出到“黑洞”
2、>/dev/null 2>&1默认情况是1,也就是等同于1>/dev/null 2>&1。意思就是把标准输出重定向到“黑洞”,还把错误输出2重定向到标准输出1,也就是标准输出和错误输出都进了“黑洞”
3、2>&1 >/dev/null意思就是把错误输出2重定向到标准出书1,也就是屏幕,标准输出进了“黑洞”,也就是标准输出进了黑洞,错误输出打印到屏幕
关于这里”&”的作用,我们可以这么理解2>/dev/null重定向到文件,那么2>&1,这里如果去掉了&就是把错误输出给了文件1了,用了&是表明1是标准输出。
三、输入名字,与现有的名字进行对比
1 #!/bin/bash
2
3 #输入名字,与现有的名字进行对比
4
5 echo "please input name:"
6 read name
7
8 if [ "$name" == "www" ]
9 then
10 echo "success"
11 else
12 echo "fail"
13 fi
四、自动给文件加可执行权限,并且执行文件
1 #!/bin/bash
2
3 #自动给文件加可执行权限,并且执行文件
4 if [ -n "$*" ]
5 then
6 chmod +x $*
7 ./$*
8 else
9 echo "please input filename"
10
11 fi
注:
-z 字符串 字符串的长度为零则为真
-n 字符串 字符串的长度不为零则为真
*“用「”」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
这次就写几个比较简单的,练习一下,下次开始写一些进阶的脚本。
欢迎关注微信公众号技术修炼之路,我们一起成长,一起进步