2013-08-17 57 views
0

我已經在我的劇本solaris bash中的以下代碼中的錯誤在哪裏?

#!/usr/bin/bash 
date=`dat '+%y%m%d_%H%M%S'` 
Output=/Tamara/output_$date 
echo $Output 
`mkdir $Output` 

寫道但是當我運行該腳本,我得到以下幾點:

/Tamara/output_23223_242222 
mkdir: Failed to make directory "/Tamara/output_23223_342222'; No such file or directory 

爲什麼會顯示這個錯誤?

+2

沒有了塔瑪拉的目錄存在嗎?並且是由有權創建目錄的用戶運行的腳本 –

+2

「Tamara」是否確實位於文件系統的根目錄?爲什麼反引號在最後一行? – choroba

+0

不是導致失敗的原因,但爲什麼在腳本中爲'mkdir $ Output'附近備份? – lurker

回答

2

線1:

#!/usr/bin/bash 

爲了更好的便攜性,應該是:

#!/bin/bash 

線2:

date=`dat '+%y%m%d_%H%M%S'` 

這裏一個錯字,應該是:

date=`date '+%y%m%d_%H%M%S'` 

或更好:

date=$(date '+%y%m%d_%H%M%S') 

或者甚至更好,避免Y2.1K蟲:

date=$(date '+%Y%m%d_%H%M%S') 

線3:

Output=/Tamara/output_$date 

/Tamara是可疑,~/Tamara會更好(或者可能是~Tamara)。

線4:

echo $Output 

與該行的代碼沒有問題,但如果真的顯示/Tamara/output_23223_242222,這既是一個虛假的日期和時間。我希望像/Tamara/output_130817_215135

線5:

`mkdir $Output` 

兩個問題在這裏,反引號起不到任何作用和選項丟失:

mkdir -p $Output 
+0

也許建議'$(date'+%Y%m%d_%H%M%S')'代替back-ticks中的版本。兩個變化:(1)我們多快忘記了Y2K的教訓,並且(2)使用'$(...)'通常更容易理解(特別是如果嵌套使用符號)。它也可能是'〜塔瑪拉' - 這個問題並不清楚。 –

+0

@JonathanLeffler感謝您的評論,回覆更新。 – jlliagre