2014-04-19 75 views
1

我想爲文件中的值(只有一個)分配一個變量'email-addr'。我試圖使用的代碼會引發錯誤。我只想將一個文件的內容,一個電子郵件地址分配給一個變量字符串。無法在Bash中分配變量

email-addr=`$(cat ../address)` 

../address的內容只有一行

[email protected] 

它說:

[email protected] 
cat: invalid option -- 'a' 
Try `cat --help' for more information. 

我在做什麼錯?

+1

連字號不允許作爲變量名稱中的字符。 – Barmar

+0

你爲什麼使用反引號和'$()'?他們做同樣的事情。 – Barmar

+0

對不起,雙重用法。我真的很困惑什麼時候使用它們。我不知道' - '不能用於變量名。這似乎是問題的關鍵,現在看起來很好。謝謝。 – user3386373

回答

1

嘗試:

my_email=$(cat ../address) 

反引號和$(...)內外執行命令,並替代值。所以你正在執行cat ../address的輸出作爲另一個命令。

-不允許在變量名中,我用_代替。

我不確定爲什麼你會從cat得到有關無效選項的錯誤,我沒有看到你發佈的任何內容會導致該錯誤。我懷疑它是來自腳本中的其他內容。

+0

非常感謝。似乎現在好了。 – user3386373

+0

皮膚貓有很多方法,這很好恕我直言 – Barmar

+0

是的,沒關係。命令替換會從命令的輸出中刪除最後一個換行符,因爲大多數命令都有一個尾隨換行符。 – Barmar

0

如果你只有在文件../address的第一行一個電子郵件地址和您要分配給一個變量(如已經提到,變量名不能有連字符),請考慮以下標準的方式的做:

read -r my_email < ../address 

my_email=$(cat ../address)我們如何在bash中執行此任務。

+0

謝謝。我從來沒有使用過'讀'功能。 – user3386373