BASH:比较字符串,一个来自文件,一个来自我的程序,如果语句总是为真
问题描述:
所以我有这块代码。基本上,我将文件$ i,检查它是否有内容,检查是否可以读取它,如果我可以打开它,抓住第一行,看看它是否是bash文件。当我每次在非空文件上运行它时,它都被记录为真和echo的bash。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 -n 1 $i)
。
[[
本身就是一个测试其内容的操作符。
@Snow_Mac奇怪的是,当我在下面发布的代码完全匹配你的代码时,奇怪的工作。真的想知道为什么。 – Timeout 2012-02-13 00:27:08
@ b1naryj您是否尝试过错误的情况(也就是说,当文件不是以“#test”开头时)? – 2012-02-13 00:32:05
@'Adam Liss'是的,它也有效。找不到任何问题。我在OSX 10.7上,也许解释器略有不同。 – Timeout 2012-02-13 00:51:29