2016-02-04 54 views
0

我期待下面的bash腳本製作只用線如何保護`*`免於在bash腳本中評估?

*~ 

一個的.gitignore文件,但它產生的,而不是*~評估(在本目錄符合此格式的文件)。

#!/bin/bash 

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

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

如何保護*免受評估?

+1

可能的複製之間的任何行( http://stackoverflow.com/questions/2470638/prevent-to-be-expanded-in-the-bash-script) –

回答

2

引用它,而這樣做echo,否則會被外殼擴展:

#!/bin/bash 

GITIGNORE=('*~') 

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

anubhava的解決方案是正確的,但在你的情況下,它是你最好這樣做。

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

這是假設你想混帳忽略*~*.bk*.backup您可以添加或刪除的[防止\ *要在bash腳本擴展]兩個EOF

+1

一般情況下使用'<<'EOF'',除非你特別想在變量和命令擴展中執行文件。 –