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

Directory name created with a dot ,using shell script

我正在使用 Cygwin 终端 运行 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 个特殊承租人要来,我该如何更正它

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

此外,使用 this 对您的脚本进行静态分析。


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