2012-08-07 146 views
0
#!/bin/bash 
#trash.sh 

$TRASHDIR=$HOME/trash 
#Does not exist yet, i have loops further in 
#the script to check if the dir exists and to create it if not 
echo $TRASHDIR 
#I have ommited the rest of the script, 
#because this is where I have the problem 

讓我們來運行這個命令:防止BASH從評估的變量名

./trash.sh 
./trash.sh: line 3: =/home/someuser/trash: No such file or directory 

我如何可以存儲這個文件名中沒有慶典計算它的變量?另外:以後如何使用這個變量進行測試?

if [ -e $TRASHDIR ] 
then 
    echo stuff here 
fi 
+0

你也應該雙引號你的變量插值。變量發生在美元符號的任何地方,你想把它放在雙引號內。 – tripleee 2012-08-07 07:57:52

+0

如果你使用'[[',即使它包含嵌入空格:'if [[-e $ TRASHDIR]]' – cdarke 2012-08-07 08:39:04

回答

5

離開初始$字符關閉時,您定義一個變種:

TRASHDIR=$HOME/trash 

當您使用$TRASHDIRbash評估,作爲空字符串(或別的東西,如果以前設置)這就是爲什麼它看起來像這樣:

=/home/someuser/trash 
+0

facepalm :),那麼在測試中就沒有必要引用你的變量了:)非常感謝你 – Kaurin 2012-08-07 07:55:04

+0

不僅「不需要」;這當然是一個錯誤。 – tripleee 2012-08-07 07:57:18