如何保护`*`不被bash脚本评估?

时间:2016-02-04 23:13:28

标签: bash

我期待以下bash脚本只生成一行.gitignore文件

*~

但它会生成*~的评估(当前目录中与此模式匹配的文件)。

#!/bin/bash

GITIGNORE=()
GITIGNORE+=("*~")

for line in "${GITIGNORE[@]}"
do
    echo ${line} >> .initial-gitignore
done

如何保护*不被评估?

2 个答案:

答案 0 :(得分:2)

在执行echo时引用它,否则它将被shell扩展:

#!/bin/bash

GITIGNORE=('*~')

for line in "${GITIGNORE[@]}"
do
    echo "$line" 
done >> .initial-gitignore

答案 1 :(得分:1)

anubhava的解决方案是正确的,但在你的情况下你做得更好。

cat << EOF >> .initial-gitignore
*~
*.bk
*.backup
EOF

假设您希望git忽略*~*.bk*.backup您可以添加或删除两者之间的任何行EOF