Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何检查文件是否存在且是否为文本文件?_Bash_Shell - Fatal编程技术网

Bash 如何检查文件是否存在且是否为文本文件?

Bash 如何检查文件是否存在且是否为文本文件?,bash,shell,Bash,Shell,大家好,我需要检查是否存在一个带有shell脚本的文件。我做了一些挖掘,最终得到了这种语法,但我不确定它为什么不起作用 请记住你是在和初学者说话 我发现您可以添加-e来检查它是否存在,但我没有找到这些快捷方式的来源或名称 ! /bin/bash 如果[$=1] 然后 如果[-e$$1]&&[-f$$1] 然后回显“文件存在” fi fi 您应该将每个条件&&置于[[]]符号之间,否则如果成功,它将被解释为执行 #! /bin/sh FILE=$1 # get filename from

大家好,我需要检查是否存在一个带有shell脚本的文件。我做了一些挖掘,最终得到了这种语法,但我不确定它为什么不起作用 请记住你是在和初学者说话

我发现您可以添加-e来检查它是否存在,但我没有找到这些快捷方式的来源或名称

! /bin/bash 如果[$=1] 然后 如果[-e$$1]&&[-f$$1] 然后回显“文件存在” fi fi 您应该将每个条件&&置于[[]]符号之间,否则如果成功,它将被解释为执行

#! /bin/sh

FILE=$1    # get filename from commandline

if [ -f $FILE ]; then
    echo "file $FILE exists"
fi
您应该将每个条件&&置于[[]]符号之间,否则如果成功,它将被解释为执行

#! /bin/sh

FILE=$1    # get filename from commandline

if [ -f $FILE ]; then
    echo "file $FILE exists"
fi
请参阅测试命令的精细手册页面,这些命令内置于不同的shell中:man test;文殊;男子猛击

你也会发现许多贝壳引物很好地解释了这一点。 或参阅bash参考手册:

请参阅测试命令的精细手册页面,这些命令内置于不同的shell中:man test;文殊;男子猛击

你也会发现许多贝壳引物很好地解释了这一点。 或者,请参阅习语bash中的bash参考手册:

#!/usr/bin/env bash

if [[ -f "${1-}" ]]
then
    echo 'the file exists'
fi
-f意味着-e 不需要分号或一次性变量。 请记住,这不会告诉您该文件是否为文本文件。与任何其他文件相比,文本文件的唯一定义是它是否只包含可打印字符,甚至还不足以处理UTF BOM字符和非ASCII字符集。为此,您可能希望查看文件${1-}的非权威输出,例如:

$ file ~/.bashrc
/home/username/.bashrc: ASCII text
更多信息,请参见惯用Bash中的。

#!/usr/bin/env bash

if [[ -f "${1-}" ]]
then
    echo 'the file exists'
fi
-f意味着-e 不需要分号或一次性变量。 请记住,这不会告诉您该文件是否为文本文件。与任何其他文件相比,文本文件的唯一定义是它是否只包含可打印字符,甚至还不足以处理UTF BOM字符和非ASCII字符集。为此,您可能希望查看文件${1-}的非权威输出,例如:

$ file ~/.bashrc
/home/username/.bashrc: ASCII text

更多信息请参见。

您需要删除$parts。报价为1.5美元的文件[命令位于。如果您有一个文件,但不知道该文件是否为文本文件以及必须使用哪个字符编码来读取,则会丢失数据。如果您喜欢猜测,可以借助诸如文件之类的工具进行猜测。注意:文件可能会回答多种可能性中的一种。另外注意:猜测基于文件的当前内容。I如果编写器稍后更新它,使用基于以前内容的猜测可能会导致错误或文本丢失。如果您更新它,可能会损坏它以供其他读者阅读。您需要删除$parts。并引用$1[命令位于。如果您有一个文件,但不知道该文件是否为文本文件以及必须使用哪个字符编码来读取,则会丢失数据。如果您喜欢猜测,可以借助诸如文件之类的工具进行猜测。注意:文件可能会回答多种可能性中的一种。另外注意:猜测基于文件的当前内容。I如果作者稍后更新它,使用基于先前内容的猜测可能会导致错误或文本丢失。如果你更新它,可能会损坏其他读者的阅读。谢谢你的回答,但如果我想说如果a和B或C是[[a&&B|C]]?@Djalleddinebouakaz如果[-e$1&&f$1&&124; 1==a]];那么……谢谢你的回答,但如果我想说A和B或C是[[A&&B||C]]?@Djalleddinebouakaz如果[-e$1&&f$1|||1==A]];那么……非常感谢你,这正是我要找的人。这真的帮了大忙,谢谢你,这正是我要找的人。这真的帮了大忙