BASH:比较字符串,一个来自文件,一个在我的程序中,if语句总是true
我有这段代码。基本上,我拿着文件$I,检查它是否有内容,检查我是否可以阅读它,是否可以打开它,抓取第一行,看看它是否是bash文件。当我每次在一个非空文件上运行它时,它被注册为true和echo的bashBASH:比较字符串,一个来自文件,一个在我的程序中,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 $
## 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机器上测试。:)