大家好,我需要检查文件是否存在shell脚本。我做了一些挖掘,最终得到了这种语法,但是我不确定为什么它不起作用 (请记住,您正在与初学者交谈)
我发现您可以添加-e例如检查其是否存在,但我不知道这些快捷方式的形式或名称
sock_yield
答案 0 :(得分:2)
在惯用的Bash中:
#!/usr/bin/env bash
if [[ -f "${1-}" ]]
then
echo 'the file exists'
fi
[[
rather than [
-f
暗示-e
请记住,这不会告诉您该文件是否为 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