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