Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.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 [-f:未找到命令_Linux_Bash_Shell - Fatal编程技术网

Linux [-f:未找到命令

Linux [-f:未找到命令,linux,bash,shell,Linux,Bash,Shell,我正在尝试在bash shell中编写一个处理文件的程序。我必须通过各种方式从命令行调用我的程序,以便他们每次都可以打印特定的列。让我们举一个调用示例: ./prog.sh -f file 我这部分的代码是 if [[( $1 == '-f') && ( $2 == '<file>')]] ; then echo "do stuff and print column" 如果[[($1=='-f')&&($2=='])],那么 echo“制作素材并打印专栏”

我正在尝试在bash shell中编写一个处理文件的程序。我必须通过各种方式从命令行调用我的程序,以便他们每次都可以打印特定的列。让我们举一个调用示例:

./prog.sh -f file
我这部分的代码是

if [[( $1 == '-f') && ( $2 == '<file>')]] ; then 
 echo "do stuff and print column"
如果[[($1=='-f')&&($2=='])],那么
echo“制作素材并打印专栏”
我确实得到了我想要打印的专栏,但是我也得到了以下警告:

未找到[-f命令


您知道如何删除错误吗?

您应该将文件检查重写为测试,这样您的代码将是:

if [[( -f $1 ) && ( $2 == '<file>')]] ; then 
   echo "do stuff and print column"
如果[[(-f$1)和($2=='')];那么
echo“制作素材并打印专栏”

确保方括号周围有空格。
[[
]
需要是单独的标记。括号不添加任何内容,可以删除。(如果保留括号,两边也需要空格。)

如果[[$1=='-f'&&&$2=='']];那么
echo“制作素材并打印专栏”
fi

值得一提的是,
$2
检查可能不应该在那里。任何字符串都是有效的文件名。

请看一看:我无法用该代码重现该错误消息(在GNU Bash 4.3上).你确定这是你代码中导致错误的部分吗?你给出的具体行不会导致错误,但尽管没有工作,这是一个原因非常清楚的错误,对此我们有许多重复的问题,已经回答过了。我不认为这是OP的意思-
-f
有问题吗那是一面旗帜argument@EliranMalka是的,你说得对,我没看到。
if [[ $1 == '-f' && $2 == '<file>' ]]; then 
    echo "do stuff and print column"
fi