shell脚本学习笔记(shell脚本实现文件的创建)

本文介绍了一个Shell脚本,用于根据命令行参数创建文件夹。脚本包含一个判断函数,确保仅当文件不存在时才创建。同时解释了Shell命令中的特殊字符如0,1,2以及输出重定向符号的用途。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#!/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脚本,他可以用来创建文件夹,当然是有条件的创建的。如果文件不存在那么就不创建,若存在则创建。

首先参数是以命令行参数的形式传进去的,在执行这个脚本的时候将要创建的文件的名字带上,在脚本内部,有一个函数是用来判断要创建的文件是否已存在,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语句,它的输出还是标准输出,所以我们可以看到两行输出。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值