shell 判断远程文件是否存在

短命女 2021-05-20 14:15 784阅读 0赞

1、判断本地文件是否存在:

  1. #! bin/sh
  2. if [ -f /data/test.data ]; then
  3. echo "file found..."
  4. else
  5. echo "no such file!"
  6. fi

2、判断远程文件是否存在:

  1. #! bin/sh
  2. TEST="10.62.81.96"
  3. for ip in $TEST
  4. do
  5. echo $ip
  6. if [ "ssh qiyu@$ip -f /data/test.data" ];then
  7. echo "true"
  8. else
  9. echo "false"
  10. fi
  11. #或者使用下面方法
  12. if ssh qiyu@$ip test -e /data/test.data ;then
  13. echo "true"
  14. else
  15. echo "false"
  16. fi
  17. done

注:这种写法if [ ssh qiyu@$ip -f /data/test.data ];then 会报错:[: too many arguments,需要加上引号。

3、test命令:

test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。

1)数值:

参数 说明
-eq 等于则为真
-ne 不等于则为真
-gt 大于则为真
-ge 大于等于则为真
-lt 小于则为真
-le 小于等于则为真

实例演示:

  1. num1=100
  2. num2=100
  3. if test $[num1] -eq $[num2]
  4. then
  5. echo '两个数相等!'
  6. else
  7. echo '两个数不相等!'
  8. fi
  9. 输出结果:
  10. 两个数相等!

注意,代码中的 [] 执行基本的算数运算,如:

  1. #!/bin/bash
  2. a=5
  3. b=6
  4. result=$[a+b] # 注意等号两边不能有空格
  5. echo "result 为: $result"
  6. 结果为:
  7. result 为: 11

2)字符串

参数 说明
= 等于则为真
!= 不相等则为真
-z 字符串 字符串的长度为零则为真
-n 字符串 字符串的长度不为零则为真

实例演示:

  1. num1="ru1noob"
  2. num2="runoob"
  3. if test $num1 = $num2
  4. then
  5. echo '两个字符串相等!'
  6. else
  7. echo '两个字符串不相等!'
  8. fi
  9. 输出结果:
  10. 两个字符串不相等!

3)文件:

参数 说明
-e 文件名 如果文件存在则为真
-r 文件名 如果文件存在且可读则为真
-w 文件名 如果文件存在且可写则为真
-x 文件名 如果文件存在且可执行则为真
-s 文件名 如果文件存在且至少有一个字符则为真
-d 文件名 如果文件存在且为目录则为真
-f 文件名 如果文件存在且为普通文件则为真
-c 文件名 如果文件存在且为字符型特殊文件则为真
-b 文件名 如果文件存在且为块特殊文件则为真

实例演示:

  1. cd /bin
  2. if test -e ./bash
  3. then
  4. echo '文件已存在!'
  5. else
  6. echo '文件不存在!'
  7. fi
  8. 输出结果:
  9. 文件已存在!

另外,Shell还提供了与( -a )、或( -o )、非( ! )三个逻辑操作符用于将测试条件连接起来,其优先级为:”!”最高,”-a”次之,”-o”最低。例如:

  1. cd /bin
  2. if test -e ./notFile -o -e ./bash
  3. then
  4. echo '至少有一个文件存在!'
  5. else
  6. echo '两个文件都不存在'
  7. fi
  8. 输出结果:
  9. 至少有一个文件存在!

4、[], [[]] :

1)[]等价于test,即test expr 和 [ expr ] 是等价的(注意两边的空格)

2)[[ ]] 是bash的一个关键字,功能比test强大的多。支持字符串的模式匹配,字符串比较时可以把右边的作为一个模式。比如[[ hello == hell? ]],结果为真。

发表评论

表情:
评论列表 (有 0 条评论,784人围观)

还没有评论,来说两句吧...

相关阅读

    相关 shell脚本判断文件是否存在

    有一个需求是判断某一个目录下文件是否存在,如果该文件不存在,则从当前目录拷贝文件到该目录。  由于没有学习写过shell脚本,晚上下班回来搜索后写出了如下的脚本,这里she