加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

一次测试多个文件条件(BASH)?

发布时间:2020-12-15 20:06:56 所属栏目:安全 来源:网络整理
导读:通常当为bash shell编写时,需要测试文件(或目录)是否存在(或不存在)并采取适当的措施。这些测试中最常见的是… -e – 文件存在,-f – 文件是常规文件(不是目录或设备文件),-s – 文件不是零大小,-d – 文件是目录,-r – 文件具有读取权限,-w – 文件具
通常当为bash shell编写时,需要测试文件(或目录)是否存在(或不存在)并采取适当的措施。这些测试中最常见的是…

-e – 文件存在,-f – 文件是常规文件(不是目录或设备文件),-s – 文件不是零大小,-d – 文件是目录,-r – 文件具有读取权限,-w – 文件具有写入或-x执行权限(对运行测试的用户)

这很容易确认,在这个用户可写的目录上演示….

#/bin/bash

if [ -f "/Library/Application Support" ]; then
echo 'YES SIR -f is fine'
else echo 'no -f for you'
fi

if [ -w "/Library/Application Support" ]; then
echo 'YES SIR -w is fine'
else echo 'no -w for you'
fi

if [ -d "/Library/Application Support" ]; then
echo 'YES SIR -d is fine'
else echo 'no -d for you'
fi

?没有-f为你?
?是SIR -w很好?
?是SIR -d很好?

我的问题,虽然看起来很明显,并且不可能是不可能的 – 是如何简单地组合这些测试,而不必为每个条件单独执行…不幸的是…

if [ -wd "/Library/Application Support" ]  
  ?  -wd: unary operator expected

if [ -w | -d "/Library/Application Support" ]   
  ?  [: missing `]'
  ?  -d: command not found

if [ -w [ -d "/Library.... ]]   &  if [ -w && -d "/Library.... ] 
  ?  [: missing `]'

?没有-wd为你?
?没有-w | -d为你?
?没有[-w [-d ..]]为您
?没有 – && -d为你?

我在这里失踪了什么?

您可以对多个条件使用逻辑运算符,例如-a用于AND:
MYFILE=/tmp/data.bin
if [ -f "$MYFILE"  -a  -r "$MYFILE"  -a  -w "$MYFILE" ]; then
    #do stuff
fi
unset MYFILE

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读