BASH:比较字符串,一个来自文件,一个在我的程序中,if语句总是true

BASH:比较字符串,一个来自文件,一个在我的程序中,if语句总是true,bash,scripting,Bash,Scripting,我有这段代码。基本上,我拿着文件$I,检查它是否有内容,检查我是否可以阅读它,是否可以打开它,抓取第一行,看看它是否是bash文件。当我每次在一个非空文件上运行它时,它被注册为true和echo的bash ## File is empty or not if [[ -s $i ]] then ## Can we read the file if [[ -r $

我有这段代码。基本上,我拿着文件$I,检查它是否有内容,检查我是否可以阅读它,是否可以打开它,抓取第一行,看看它是否是bash文件。当我每次在一个非空文件上运行它时,它被注册为true和echo的bash

            ## File is empty or not
            if [[ -s $i ]]
            then
                ## Can we read the file 
                if [[ -r $i ]]
                then
                    ## File has content
                    if [[ $(head -n 1 $i) = "#! /bin/bash" ]]
                    then
                        echo -n " bash"
                    fi
                fi
            else
                ## file does not have content
                echo -n " empty"
            fi
以下是检查是否为bash的内容:

if [[ $(head -n 1 $i) = "#! /bin/bash" ]]

[[
替换为
[
,并将
$(head-n1$i)
括在引号中


[
本身就是一个测试其内容的操作员。

@Snow\u Mac奇怪,当我在下面发布的代码(与您的代码完全匹配)起作用时,这就起作用了。我真的想知道为什么。@b1naryj您是否尝试过错误的情况(即,当文件不以“#test”开头时)?@“Adam Liss”是的,它也有效。没有发现任何问题。我在OSX 10.7上,可能解释器有点不同。我尝试了==并且有效。请注意,我正在Fedora 10.10机器上测试。:)