shell脚本学习笔记(shell脚本实现⽂件的创建)
#!/bin/bash
function is_dir()
{
local dir=$1
if [ -d ${dir} ];then
return 0
else
return 1
fi
}
for val in $@
do
if is_dir ${val};then
:
else
echo "create it!"
mkdir ${val} > /dev/null 2>&1
if [ $? -ne 0 ];then
echo "create ${val} failed"
exit 1
fi
fi
done
这是我实现的⼀个shell脚本,他可以⽤来创建⽂件夹,当然是有条件的创建的。如果⽂件不存在那么就不创建,若存在则创建。
linux循环执行命令脚本⾸先参数是以命令⾏参数的形式传进去的,在执⾏这个脚本的时候将要创建的⽂件的名字带上,在脚本内部,有⼀个函数是⽤来判断要创建的⽂件是否已存在,for循环中拿到该函数的退出状态来判断是否需要创建它。
此外在该脚本中⽤到了 mkdir ${val} > /dev/null 2>&1 我就来说说这些语句吧。
1. ⾸先数字 0,1,2 这些相信⼤家都知道吧,在linux中: 0---标准输⼊ 1---标准输出 2---标准错误
2. 在linux中 >,<,>> ,<< 这四个符号分别代表输出重定向,输⼊重定向,输出追加重定向,输⼊追加重定向;其中追加重定向意思是:假如你重定向的⽬标是⼀个⽂件,那么简单重定向会覆盖原来⽂件的内容(在写代码时切记,否则伤⼼不是别⼈哟),⽽追加重定向是在原问价末尾跟上输⼊输出的内容
3. 2>&1 这句话的意思是将标准错误输出重定向等同于标准输出;其中&1表⽰等同于的意思,但是&若跟在末尾则表⽰在后台执⾏的意思,这还是要区别开来的。
4. mkdir ${val} > /dev/null 这表⽰创建⽂件时的相关的输出信息重定向到空的设备⽂件。其实 mkdir ${val} > /dev/null 2>&1 <-> mkdir ${val} 1 > dev/null 2>&1 后⾯的这种写法更能让⼈理解,⾸先将标准输出1重定向到空的设备⽂件,再将标准错误重定向到标准输出1,那么整句话的意思是将标准输出和标准错误都重定向到了空的设备⽂件,意思也就是清空,所以这样写可以⽤来避免shell命令或者程序的内容输出
运⾏结果如下:
可以看出确实创建出了⽂件,但是有⼈问:你不是将输出“屏蔽”了吗,为什么还有两⾏输出,你是不搞错了,真菜...
其实我屏蔽的只是创建⽂件的相关信息,并不是所有信息,因为在重定向之前有⼀句echo语句,它的
输出还是标准输出,所以我们可以看到两⾏输出。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论