2013-05-27 48 views
4

我想運行下面的腳本系統日期爲可變UNIX

#!/bin/sh 
temp =`date +%Y%m%d` 
echo "$temp" 

但這種預期 它拋出此錯誤消息溫度不運行:執行權限被拒絕

+0

可能重複[Bash腳本變量聲明 - 命令未找到](http://stackoverflow.com/questions/2268104/bash-script-variable-declaration-command-not-found) – tripleee

回答

8

你有

temp =`date +%Y%m%d` 
    ^

因此,您需要刪除tempdate之間的空格:

#!/bin/sh 
temp=$(date +%Y%m%d) # better than `exp`, thanks @OliverDulac (see comments) 
echo "$temp" 

有了它,它對我有用。

確保文件具有執行權限:

chmod +x your_file 

或只是

/bin/sh /your/script/path/your_file 
+0

而且,作爲一個好習慣(並且允許輕鬆嵌套),請改用'$(...)':'temp = $(date +%Y%m%d)'。在'$(...)'內部,您可以在該級別使用引號和變量以及特殊字符*,也就是說,您可以在單獨的行中寫入內部。例如:'foo = $(echo「$ var $(echo $」var「)」)' –

+0

好點,@OlivierDulac!記住這一點總是很好,所以我用這個更新我的答案。謝謝 – fedorqui

+0

+1對於引用^^ –

0

temp變量需要不帶空格被分配執行它。

0

您的腳本的確有語法錯誤,解決它在第二行刪除temp後的空間,但這個錯誤不會拋出 execute permission deniedline 2: temp: command not found

你的腳本沒有執行權限,解決它調用:

chmod +x FILE.sh 

其中FILE是這個腳本的名稱。

0

在sh腳本(不只是慶典)爲變量賦值時等號是不能接受的,因爲你可以做這樣的事情:

VARIABLE=something ./runcommand 

已經變量遠銷./runco​​mmand子,但通常不會導出到所有子進程。

如果允許空間,將無法區分作業結束與命令行開始。

0

我在上面的代碼中發現了錯誤,我在字符串temp後面留下了一個空格。這是導致錯誤。

+1

更像其他人爲您找到它嗎? – LtWorf