I am using Cygwin Terminal to run shell to execute shell scripts of my Windows 7 system. I am creating directory , but it is getting created with a dot in name.
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
on executing sh test.sh
its creating folder as Test_26062015
while expectation is Test_26062015
.Why are these 3 special charterers coming , how can I correct it
Double quote the $dirPath
in the last command and add -p
to ignore mkdir
failures when the directory already exists: mkdir -m 777 -p "$dirPath"
. Besides this, take care when combining variables and strings: dirName="Test_${temp}"
looks better than dirName="Test_$temp"
.
Also, use this for static analysis of your scripts.
UPDATE: By analyzing the debug output of sh -x
, the issue appeared due to DOS-style line-endings in the OP's script. Converting the file to UNIX format solved the problem.