代码之家  ›  专栏  ›  技术社区  ›  Vinko Vrsalovic

[]]中的bash==operator太聪明了!

  •  3
  • Vinko Vrsalovic  · 技术社区  · 15 年前

    以此类推。我想知道一些文件集是否有作为第一行的“------”。

    所以,

    for file in *.txt
    do
        if [[ `head -1 "$file"` == "------" ]]
        then
            echo "$file starts with dashes"
        fi
    done
    

    问题是,head用换行符返回内容,但是”------“没有换行符。

    为什么有效?

    2 回复  |  直到 15 年前
        1
  •  6
  •   Laurence Gonsalves    15 年前

    反勾线去掉了尾随的换行符。例如:

    foo=`echo bar`
    echo "<$foo>"
    

    印刷品

    <bar>
    

    即使第一个回音打印出“bar”,然后是一个换行符。

        2
  •  0
  •   nos    15 年前

    bash对命令替换的结果执行分词,即 head -1 "$file"

    分词法可以去除换行符。