如何检查 csh 脚本中是不是存在任何文件?

Posted

技术标签:

【中文标题】如何检查 csh 脚本中是不是存在任何文件?【英文标题】:how to check existence of any file in csh script?如何检查 csh 脚本中是否存在任何文件? 【发布时间】:2015-03-05 01:42:15 【问题描述】:

为了检查我正在使用的 csh 脚本中是否存在任何文件

if [ -f /var/opt/temip/conf/.temip_config ]

但我遇到了错误

if [ -f /var/opt/temip/conf/.temip_config ]

if: Expression Syntax.

谁能告诉我怎么做?

【问题讨论】:

这根本不是有效的 Csh 语法。这是一件好事,因为您可能不应该在 Csh 中编写脚本。您的语法适用于 sh,这可能是您无论如何都应该使用的。但是,如果没有脚本其余部分的上下文,我们无法确定将第一行更改为 #!/bin/sh 是否可行。 @tripleee 你能告诉我如何在 csh 脚本中检查文件是否存在吗? 放弃csh。用 POSIX sh(为了可移植性)或 GNU bash 或 Python 或 zsh 编写脚本 【参考方案1】:

来自the manpage:

f
    Plain file

您将它与if 语句一起使用:

if ( -f file.txt ) then
    echo Exists
else
    echo No such file
endif

基于这个问题and your previous question,您似乎对csh 语法的工作原理一无所知,因为您一直使用POSIX shell 语法。我会强烈建议您要么熟悉 csh 语法,要么只使用 POSIX shell(无论如何这可能更适合编写脚本)。

【讨论】:

【参考方案2】:

在 CShell 中使用 -e 选项检查文件是否存在

文件名不必“硬编码”到 if 语句中,但 可能是这样的参数:

 if (-e "$filePath") then

这是 Cshell 文件查询的完整列表。

-e file           file merely exists (may be protected from user)
-r file           file exists and is readable by user
-w file           file is writable by user
-x file           file is executable by user
-o file           file is owned by user
-z file           file has size 0
-f file           file is an ordinary file
-d file           file is a directory

【讨论】:

以上是关于如何检查 csh 脚本中是不是存在任何文件?的主要内容,如果未能解决你的问题,请参考以下文章

使用 BATCH 脚本检查目录中是不是存在任何类型的文件

如何检查命令是不是存在于 shell 脚本中? [复制]

如何在unix脚本中提取文件名的一部分并检查它是不是存在[重复]

检查linux脚本中是不是存在文件[重复]

SSIS脚本任务检查文件夹中是不是存在文件

如何在 shell 脚本中检查目录是不是存在? [复制]