文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

shell检测某个文件/文件夹是否存在

2023-08-31 16:13

关注

1、shell检测某一文件是否存在

当你在shell中需要检查一个文件是否存在时,通常需要使用到文件操作符-e-f。第一个-e用来检查文件是否存在,而不管文件类型。第二个-f仅仅用来检查文件是常规文件(不是目录或设备)时返回true。

FILE=/etc/resolv.confif test -f "$FILE"; then    echo "$FILE exist"fiFILE=/etc/resolv.confif [ -f "$FILE" ]; then    echo "$FILE exist"fiFILE=/etc/resolv.confif [[ -f "$FILE" ]]; then    echo "$FILE exist"fi

2、shell检测某一目录是否存在

Linux系统中运算符-d允许你测试一个文件是否时目录。

例如检查/etc/docker目录是否存在,你可以使用如下脚本:

FILE=/etc/dockerif [ -d "$FILE" ]; then    echo "$FILE is a directory"fi[ -d /etc/docker ] && echo "$FILE is a directory"

3、检查文件是否不存在

和其他语言相似,test表达式允许使用!(感叹号)做逻辑not运算,示例如下:

FILE=/etc/dockerif [ ! -f "$FILE" ]; then    echo "$FILE does not exist"fi[ ! -f /etc/docker ] && echo "$FILE does not exist"

4、检查是否存在多个文件

不使用复杂的嵌套if/else构造,您可以使用-a(或带[[&&预算符)来测试是否存在多个文件,示例如下:

if [ -f /etc/resolv.conf -a -f /etc/hosts ]; then    echo "Both files exist."fiif [[ -f /etc/resolv.conf && -f /etc/hosts ]]; then    echo "Both files exist."fi

5、应用实例

只跑一遍diff的时候,可能因为环境不稳定导致diff,因此循环跑某个场景的diff query。具体实现如下,get_diff.py结合具体的场景定,-input_file ${result_dir}/${query_file}_${head}   -output_file ${result_dir}/${query_file}_${behind}这两个文件一样。

base="501"exp="506"iter_num=2query_name="model_iter_v2"data_dir=./data_${query_name}result_dir=./result_${query_name}if [ ! -d "${result_dir}" ]; then    mkdir ${result_dir}fiif [  -d "${result_dir}" ]; then    rm -rf ${result_dir}}    cp ${data_dir}/${query_file} ${result_dir}/${query_file}_1    head=1    while [[ ${head} -lt ${iter_num} ]]    do        behind=$((${head} + 1))        echo ${query_file}_${head}        echo ${query_file}_${behind}                python get_diff.py -input_file ${result_dir}/${query_file}_${head}  -b ${base} -e ${exp}  -output_file ${result_dir}/${query_file}_${behind} > ${query_file}.log        sort -t"    " -k2,2nr ${result_dir}/${query_file}_${behind}_result > ${result_dir}/${query_file}_${behind}        rm ${result_dir}/${query_file}_${behind}_result        if [ ${behind} -eq ${iter_num} ]; then            cp ${result_dir}/${query_file}_${behind} ./${query_file}_diff        fi        let head++    donedone



Linux中Shell脚本判断文件或文件夹是否存方法 | linux资讯

来源地址:https://blog.csdn.net/u013069552/article/details/128290266

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-服务器
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯