2015-06-26 71 views
2

我正在使用Cygwin Terminal運行shell來執行我的Windows 7系統的shell腳本。 我正在創建目錄,但它正在創建一個點名。使用shell腳本使用點創建的目錄名稱

test.sh

#!/bin/bash 
echo "Hello World" 
temp=$(date '+%d%m%Y') 
dirName="Test_$temp" 
dirPath=/cygdrive/c/MyFolder/"$dirName" 
echo "$dirName" 
echo "$dirPath" 
mkdir -m 777 $dirPath 

上執行sh test.sh其創建的文件夾中Test_26062015而期望是Test_26062015。爲什麼在這些3個特殊租船來了,我怎麼能改正

回答

2

雙在最後的命令引用$dirPath並添加-p,以便在目錄已存在時忽略mkdir失敗:mkdir -m 777 -p "$dirPath"。除此之外,在組合變量和字符串時要小心:dirName="Test_${temp}"看起來比dirName="Test_$temp"好。

此外,使用this進行腳本的靜態分析。


UPDATE:通過分析sh -x調試輸出,這個問題到DOS風格的行結束在OP的劇本出現所致。將文件轉換爲UNIX格式解決了這個問題。

+0

它還在用點創建 – 2FaceMan

+0

什麼'echo'調用爲您打印?另外,嘗試用'bash test.sh'而不是'sh test.sh'來執行腳本,看看這是否有所幫助。 –

+0

echo會打印出好的'/ cygdrive/c/MyFolder/Test_26062015',但是當我做'ls'時'Test_26062015 ???' – 2FaceMan