如何检查文件是否存在以及是否为文本文件?

时间:2019-05-29 07:53:09

标签: bash shell

大家好,我需要检查文件是否存在shell脚本。我做了一些挖掘,最终得到了这种语法,但是我不确定为什么它不起作用 (请记住,您正在与初学者交谈)

我发现您可以添加-e例如检查其是否存在,但我不知道这些快捷方式的形式或名称

sock_yield

3 个答案:

答案 0 :(得分:2)

在惯用的Bash中:

#!/usr/bin/env bash

if [[ -f "${1-}" ]]
then
    echo 'the file exists'
fi

请记住,这不会告诉您该文件是否为 text 文件。与其他文件相比,文本文件的唯一“定义”是它是否仅包含可打印字符,甚至还不足以处理UTF BOM字符和非ASCII字符集。为此,您可能需要查看file "${1-}"的非权威输出,例如:

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

Bash Guide中的更多内容。

答案 1 :(得分:1)

#!/bin/bash
if [ "$#" == 1 ]; then
    if [[ -e "$1" && -f "$1" ]]; then
        echo 'The file exists';
    fi
fi

您应该将每个条件&&放在[[]]符号之间,否则,如果成功,它将被解释为execute。

答案 2 :(得分:1)

#! /bin/sh

FILE=$1    # get filename from commandline

if [ -f $FILE ]; then
    echo "file $FILE exists"
fi

请参见测试命令的详细手册,该命令内置在不同的shell中:man test;嘘猛男

您还会发现许多贝壳底漆,它们对此作了很好的解释。 或参见bash参考手册:https://www.gnu.org/software/bash/manual/bash.pdf