如何在linux中判断变量或文件是否为空(linux判断不为空)

如何在Linux中判断变量或文件是否为空

在Linux系统中,判断变量或文件是否为空是一项很常见的任务。无论是在脚本编程中,还是在系统维护或日常操作中,判断变量或文件是否为空都是必要的。本文将介绍如何在Linux中判断变量或文件是否为空,并提供实用的代码示例。

一、判断变量是否为空

在Linux中,我们可以通过使用“test”命令或“[ ]”来判断变量是否为空。下面是一些实用的代码示例:

1.使用“test”命令判断变量是否为空:

“`

if test -z $var; then

echo “变量为空”

fi

“`

2.使用“[ ]”来判断变量是否为空:

“`

if [ -z $var ]; then

echo “变量为空”

fi

“`

二、判断文件是否为空

判断一个文件是否为空可以使用以下命令:

“`

if [ ! -s $file ];then

echo “$file文件为空”

fi

“`

其中, “-s”选项表示文件存在且大小大于0。

判断一个文件是否为空还可以使用以下命令:

“`

if [ ! -s $file ]; then

echo “$file文件为空”

fi

“`

其中, “-s”选项表示文件存在且大小大于0。

三、结语

在Linux中,判断变量或文件是否为空是一项非常基础的任务,但却是非常重要的。通过使用本文所提供的例子,可以有效地判断变量或文件是否为空。此外,在编写脚本或进行系统管理时,这些技能也是非常必要的。

相关问题拓展阅读:

  • linux正则,匹配非空字符
  • linux awk取值为空
  • Linux常用命令详解 | find

linux正则,匹配非空字符

. 匹芦森世配单个字符

* 匹配任意长度的字符串陪肢

XXX之间是或关春旅系

linux awk取值为空

a=`sed -n ‘/^GATEWAY/p’ /etc/sysconfig/network-scripts/ifcfg-eth0 | awk -F ‘=’ ‘{print $2}’`

echo $a

如果这样还是为空的话,请检查启卖你的ifcfg-eth0文件里搏宴面是不是有基旁银以 GATEWAY开头的行

如果ifcfg-eth0文件中没有GATEWAY这一项锋凯,echo $a 显示为空。

不满足 /^GATEWAY/ 条件就不会打印任何东西。

加个判断即可。

a=”`awk -F= ‘/^GATEWAY/{print $2}’ /etc/sysconfig/network-scripts/ifcfg-eth0`”

if ; then #变量a不为空(文件中存在GATEWAY这项)

    # Do sth.

else 旅辩#变量a为空(文件中不存在GATEWAY这项)

    # Do sth. else

fi

一般来说会返回空值的

而且你上面这语句不太对

Linux常用命令详解 | find

find 命令的基本结构如下:

find 命令手册

: man find

find 命令中的 -name 选项可以根据文件名称进行检索(

区分大小写

)。如需要忽略文件名中的大小写,可以使用 -iname 选项。

-name 和 -iname 两个选项都支持

wildcards

。如:

例1:查找 /usr 目录下所有文件名以 .txt 结尾的文件

例2:查找 /usr 目录下所有文件名刚好为 4 个字符的文件

例3:查以大写字母开头的文件

例4:查以两个小写字母和两个数字开头的txt文件

类似的还有:

-lname -ilname

-path -ipath

-regx -iregx

有些时候,你需要在搜索时匹配某个文件或目录的

完整路径

,而不仅仅是匹配文件名。可以使用 -path 或 -ipath 选项。

例1:如查找 /usr 下所有文件名以 .txt 结尾的文件或目录,且该文件的父目录必须是 src 。可以使用以下命令:

例2:在当前目录除aa之外的子目录内搜索 txt文件

例3:在当前目录,不再子目录中,查找txt文件

如果只想搜索得到文件

目录,即不想它们同时出现在结果中。可以使用 -type 选项指定文件类型。

-type 选项最常用的参数如下:

例:检索 /usr 下所有文件名以 python 开头的目录

find 命令支持 -empty 选项用来检索

为空

的文件或目录。空文件即文件里没有任何内容,空目录即目录中没有任何文件或子目录。

例:检索用户主目录下所有的空目录

find 命令也允许用户对当前的匹配条件进行

“反义”

(类似于

逻辑非

操作)。

如需要检索 /usr 下所有文件名

以 .txt 为后缀的文件。可以使用以下命令:

也可以“翻转”任何其他的筛选条件,如:检索 /usr 下所有内容不为空的文件

为了检索归属于特定用户的文件或目录,可以使用 -user 选项。

例:检索根目录下所有属主为 starky 的文件

类似于 -user 选项, -group 选项则可以根据文件或目录的

属组

进行检索。

有些时候,需要根据文件创建或修改的时间进行检索。

Linux 系统中,与文件相关联的时间参数有以下三种:

与此对应的是 find 命令中的 -mtime , -atime 和 -ctime 三个选项。

这三个选项的使用遵循以下示例中的规则:

检索 /usr 下两天前被修改过的文件

如果觉得 -mtime 等选项以

为单位时间有点长,还可以使用 -mmin , -amin , -cmin 三个选项。

查找比 aa.txt

的文件

查找比 aa.txt

的文件

查找比aa.txt新,比bb.txt旧的文件

-size 选项允许用户通过文件大小进行搜索(只适用于文件,目录没有大小……)。

表示文件大小的单位由以下字符组成:

另外,还可以使用 + 或 – 符号表示

大于

小于

当前条件。

检索文件大小高于 1 GB 的文件

find 命令可以使用 -perm 选项以文件权限为依据进行搜索。

9.1使用符号形式

例1:如需要检索 /usr 目录下权限为 rwxr-xr-x 的文件,可以使用以下命令:

例2:搜索 /usr 目录下所有权限为 r-xr-xr-x (即系统中的所有用户都只有读写权限)的文件和目录,可以使用以下命令:

很多时候,我们只想匹配文件权限的一个睁樱

子集

。比如,检索可以直接被任何友慎用户执行的文件,即只关心文悉告丛件的执行权限,而不用管其读写权限是什么。

上述的需求可以通过以下命令实现:

其中 a=x 前面的 / 符号即用来表示只匹配权限的某个子集(执行权限),而不用关心其他权限的具体设置。

9.2使用数字形式

例如:搜索 /usr 目录下权限为

644

(即 rwxr-xr-x )的文件

find 命令默认是以

递归

的方式检索项目的,这有时候会导致得到的结果数量非常巨大。可以使用 -maxdepth 限制 find 命令递归的层数。

例如:搜索时向下递归的层数更大为 3

在之前的例子中有出现多个搜索条件的

组合

以及对某个搜索条件的

反转

实际上 find 命令支持

“and”

“or”

两种逻辑运算,对应的命令选项分别是 -a 和 -o 。通过这两个选项可以对搜索条件进行更复杂的组合。

此外还可以使用

小括号

对搜索条件进行

分组

。注意 find 命令中的小括号常需要用

单引号

包裹起来。因小括号在 Shell 中有特殊的含义。

如检索 /usr 下文件名以 python 开头且类型为目录的文件

该命令等同于:

更复杂的组合形式如:

例4:在除dir0及子目录以外的目录下查找txt后缀文件

说明:-a 应该是and的缩写,意思是逻辑运算符‘与’(&&); -o应该是or的缩写,意思是逻辑运算符‘或’(||), -not 表示非.

命令行的意思是:如果目录dir0存在(即-a左边为真),则求-prune的值,-prune 返回真,‘与’逻辑表达式为真(即-path ‘./dir0*’ -a -prune 为真),find命令将在除这个目录以外的目录下查找txt后缀文件并打印出来;如果目录dir0不存在(即-a左边为假),则不求值-prune ,‘与’逻辑表达式为假,则在当前目录下查找所有txt后缀文件。

-delete 选项可以用来删除搜索到的文件和目录。

例如:删除 home 目录下所有的空目录:

-exec 选项可以对搜索到的结果执行执行该参数所给出的shell命令。形式为 command {} \; ,注意{}与\;之间有空格 。每当 find 命令检索到一个符合条件的文件,会使用其完整路径取代命令中的 {} ,然后执行 -exec 后面的命令一次。

例1:如需要将 home 目录下所有的 MP3 音频文件复制到移动存储设备(假设路径是 /media/MyDrive ),可使用下面的命令:

其中的

大括号

( {} )作为检索到的文件的

占位符

,而分号( ; )作为命令结束的标志。因为分号是 Shell 中有特殊含义的符号,所以需要使用单引号括起来或前面加上转义符 \ 。

例2:查看当前目录下的所有普通文件,并在 – exec 选项中使用 ls -l 命令将它们列出

例3:在多个文件中检索某个指定的字符串。如在用户主目录下的所有文件中检索字符串 hello ,可以使用如下命令:

创建 Gzip 格式的压缩文件的命令为:

现在假设需要将用户主目录下所有的 MP3 文件添加到压缩包 music.tar.gz 中,直观的感觉是,其命令应为如下形式:

实际情况是,这样得到的 music.tar.gz 其实只包含一个 MP3 文件。原因是 find 命令

每次

发现一个音频文件,都会再执行一次 -exec 选项后面的压缩命令。导致先前生成的压缩包被覆盖。

可以先让 find 命令检索出所有符合条件的音频文件,再将得到的

文件列表

传递给后面的压缩命令。完整的命令如下:

如果想浏览搜索到的文件(目录)的详细信息(如权限和大小等),可以直接使用 -ls 选项。

例如:浏览所有 1G 以上大小的文件的详细信息

与exec作用相同,区别在于,在执行命令之前,都会给出提示,让用户确认是否执行

与 exec 作用相同 ,起承接作用。区别在于 |xargs 主要用于承接删除操作 ,而 -exec 都可用 如复制、移动、重命名等

例1:查找以ap或may开头的文件

例2:查硬连接数大于2的文件或目录

例3:查找含特定字符串的文件。查找当前目录下含有”the string you want find…”字符串的文件:

例4:从根目录开始查tmpfile,一旦查到马上删除

例5:如何用find查找某一天更改的文件?可以使用这一行命令来实现:

A Guide to the Linux “Find” Command

关于linux 判断不为空的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

成都创新互联建站主营:成都网站建设、网站维护、网站改版的网站建设公司,提供成都网站制作成都网站建设、成都网站推广、成都网站优化seo、响应式移动网站开发制作等网站服务。

当前标题:如何在linux中判断变量或文件是否为空(linux判断不为空)
当前链接:http://www.shufengxianlan.com/qtweb/news30/457480.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联