使用shell脚本使用点创建的目录名称

时间:2015-06-26 08:19:52

标签: bash shell windows-7 cygwin sh

我正在使用Cygwin Terminal运行shell来执行我的Windows 7系统的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名特殊租船人来了,我该如何纠正?

1 个答案:

答案 0 :(得分:2)

在最后一个命令中双引$dirPath,并在目录已存在时添加-p以忽略mkdir个失败:mkdir -m 777 -p "$dirPath"。除此之外,在组合变量和字符串时要小心:dirName="Test_${temp}"看起来比dirName="Test_$temp"好。

另外,使用this进行脚本的静态分析。

更新:通过分析sh -x的调试输出,问题出现在OP脚本中由于DOS样式的行结尾。将文件转换为UNIX格式解决了这个问题。