shell 脚本中的 '-f' 和 '-d' 是什么意思

 更新时间:2023年12月21日 09:16:16   作者:轻棠  
本文讲解如何使用'-f'和'-d'条件表达式来测试文件和目录,在实际脚本中,这样的条件判断常用于根据不同的情况执行不同的操作,感兴趣的朋友跟随小编一起看看吧

shell脚本中,'-f' 和 '-d'是用于测试文件类型的条件表达式。
1、'-f'表达式:

  • 表达式: '[ -f file ]'
  • 描述: 判断给定路径是否是一个常规文件 (regular file)。 常规文件是指不是目录或设备文件的文件。
  • 示例:
    if [ -f /path/to/file ]; thenecho "这是一个文件。"fi

2、'-d'表达式:

  • 表达式: '[ -d dirctory ]'
  • 描述: 判断给定路径是否为一个目录。
  • 示例:
    if [ -d /path/to/dirctory ]; thenecho "这是一个目录"fi以上两个表达式通常与条件语句结合使用,例如'if'语句,来根据文件或目录的类型执行不同的操作。

示例脚本:

!/bin/bash

file_path="/path/to/somefile"
directory_path="/path/to/somedirectory"

检查文件是否存在并是常规文件

if [ -f "$file_path" ]; then
echo "The file exists and is a regular file."
else
echo "The file either does not exist or is not a regular file."
fi

检查目录是否存在

if [ -d "$directory_path" ]; then
echo "The directory exists."
else
echo "The directory does not exist."
fi

此脚本演示了如何使用'-f'和'-d'条件表达式来测试文件和目录。在实际脚本中,这样的条件判断常用于根据不同的情况执行不同的操作。

常见Linux shell脚本中的“-e -d -f -eq -ne -gt -ge”操作符的含义

常见shell脚本中的“-e -d -f -eq -ne -gt -ge”操作符的含义:

文件表达式

-e filename:如果filename存在,则为真。
-d filename:如果filename为目录,则为真 。
-f filename:如果filename为常规文件,则为真。
-L filename:如果filename为符号链接,则为真。
-r filename:如果filename可读,则为真。
-w filename:如果filename可写,则为真。
-x filename:如果filename可执行,则为真。
-s filename:如果文件长度不为0,则为真。
-h filename:如果文件是软链接,则为真。
filename1 -nt filename2:如果filename1比filename2新,则为真。
filename1 -ot filename2:如果filename1比filename2旧,则为真。

整数变量表达式

-eq:等于
-ne:不等于
-gt :大于
-ge:大于等于
-lt  :小于
-le :小于等于

字符串变量表达式

If  [ $a = $b ]                   :如果string1等于string2,则为真。字符串允许使用赋值号做等号。
if  [ $string1 !=  $string2 ]:如果string1不等于string2,则为真。
if  [ -n $string  ]               :如果string 非空,则为真。
if  [ -z $string  ]               :如果string 为空,则为真。
if  [ $sting ]                     :如果string 非空,则为真。

逻辑非 !

if [ ! 表达式 ]    :条件表达式的逻辑非
if [ ! -d $num ] :如果不存在目录$num

逻辑与 –a

if [ 表达式1 –a 表达式2 ]:条件表达式的与

逻辑或 -o

if [ 表达式1 –o 表达式2 ]:条件表达式的或

到此这篇关于shell 脚本中的 '-f' 和 '-d' 分别代表什么意思的文章就介绍到这了,更多相关shell '-f' 和 '-d' 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • Shell脚本批量修改文件后缀名代码分享

    Shell脚本批量修改文件后缀名代码分享

    这篇文章主要介绍了Shell脚本批量修改文件后缀名,问中收集了2个示例,需要的朋友可以参考下
    2014-07-07
  • Linux中的内核链表实例详解

    Linux中的内核链表实例详解

    这篇文章主要介绍了Linux中的内核链表实例详解的相关资料,链表中一般都要进行初始化、插入、删除、显示、释放链表,寻找节点这几个操作,需要的朋友可以参考下
    2017-08-08
  • Impala-shell命令参数的实现

    Impala-shell命令参数的实现

    这篇文章主要介绍了Impala-shell命令参数的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Linux 下的 unzip 命令使用示例详解

    Linux 下的 unzip 命令使用示例详解

    Unzip 是一个在 Unix 或类 Unix 系统(例如 Linux)中常用的命令行工具,用于解压缩由 ZIP 压缩算法创建的压缩文件,本文给大家介绍Linux 下的 unzip 命令使用示例详解,感兴趣的朋友一起看看吧
    2023-11-11
  • Shell中实现整数自增的几种方法示例

    Shell中实现整数自增的几种方法示例

    Linux Shell中写循环时,常常要用到变量的自增,下面这篇文章主要给大家分享了关于Shell中实现整数变量自增的几种方法,包括declare -i来声明、使用let命令、使用(())以及使用expr命令等等方法,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-08-08
  • SED单行脚本快速参考(流编辑器)

    SED单行脚本快速参考(流编辑器)

    sed是一个非交互式的流编辑器。所谓非交互式,是指使用sed只能在命令行下输入编辑命令来编辑文本,然后在屏幕上查看输出
    2013-01-01
  • shell中对xargs命令传参进行编辑

    shell中对xargs命令传参进行编辑

    本文主要介绍了shell中对xargs命令传参进行编辑,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-01-01
  • shell中循环调用hive sql 脚本的方法

    shell中循环调用hive sql 脚本的方法

    今天小编就为大家分享一篇shell中循环调用hive sql 脚本的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • Linux下使用expect命令编写自动化交互脚本

    Linux下使用expect命令编写自动化交互脚本

    今天小编就为大家分享一篇关于Linux下使用expect命令编写自动化交互脚本,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-11-11
  • Linux 下使用shell脚本定时维护数据库的案例

    Linux 下使用shell脚本定时维护数据库的案例

    这篇文章主要介绍了Linux 下使用shell脚本定时维护数据库,本文通过案例分析给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03

最新评论