Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.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/5/bash/16.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
Linux 验证bash中的某些参数_Linux_Bash - Fatal编程技术网

Linux 验证bash中的某些参数

Linux 验证bash中的某些参数,linux,bash,Linux,Bash,我正在用BASH进行验证 if [ !( ( -e $f ) || ($# -lt 2) || ( -d $f ) ) ]; then exit 0 fi 我试图查看文件是否存在,或者它是否是一个目录,或者是否有足够的参数通过终端传递。我可以这样做吗?还是必须用另一种方式来做?看起来您至少有一些问题 测试的语法需要更现代的双[[命令,而不是传统的单[命令 最后你缺少了一个fi。(我为你编辑了这个,多亏了修改它的人。) 你可能会感觉到你的测试被颠倒了,但我不确定。这取决于你的脚本的其余

我正在用BASH进行验证

if [ !( ( -e $f ) || ($# -lt 2) || ( -d $f ) ) ]; then
    exit 0
fi

我试图查看文件是否存在,或者它是否是一个目录,或者是否有足够的参数通过终端传递。我可以这样做吗?还是必须用另一种方式来做?

看起来您至少有一些问题

  • 测试的语法需要更现代的双
    [[
    命令,而不是传统的单
    [
    命令

  • 最后你缺少了一个
    fi
    。(我为你编辑了这个,多亏了修改它的人。)

  • 你可能会感觉到你的测试被颠倒了,但我不确定。这取决于你的脚本的其余部分是什么样子


从您的问题中可以看出,您希望拒绝任何非普通文件。在这种情况下,如果您使用-f而不是-e,则对目录的测试是多余的

if [[  ! -f "$f" || $# -lt 2 ]]; then
    exit 0
fi
顺便说一句,如果这是一个错误退出,那么您应该使用0以外的内容退出—在大多数情况下,0表示成功;退出1会更好