[-f:命令未找到
问题描述:
我想在bash shell中编写一个处理文件的程序。我必须以各种方式从命令行调用我的程序,以便每次都可以打印特定的列。让我们给例如该呼叫:[-f:命令未找到
./prog.sh -f file
我对于这部分代码是
if [[($1 == '-f') && ($2 == '<file>')]] ; then
echo "do stuff and print column"
我得到我想要打印的列,但我也越来越以下警告:
[-f命令没有被发现
如何删除错误的任何想法?
答
您应该重写文件检查作为一个测试让你的代码是:
if [[(-f $1) && ($2 == '<file>')]] ; then
echo "do stuff and print column"
+1
我不认为这就是OP的含义 - 'f'作为标志参数 –
+0
@EliranMalka是的你是对的,没有看到。 – CheesyMacHack
答
确保有前后的方括号的空间。 [[
和]]
需要分离令牌。圆括号不会添加任何内容并且可以被删除。 (如果你离开他们,他们也需要在两侧的空间。)
if [[ $1 == '-f' && $2 == '<file>' ]]; then
echo "do stuff and print column"
fi
对于它的价值,在$2
检查可能不应该在那里。任何字符串都是有效的文件名。
请看看:http://www.shellcheck.net/ – Cyrus
我不能用该代码(在GNU Bash 4.3上)重现该错误消息。你确定这是导致错误的代码的一部分吗? – wjandrea
您提供的特定行不会导致错误*,但*尽管缺少工作[mcve],但它是一个很好理解的错误,因此我们有许多重复的,已经回答的问题。 –