BASH:检查目录是否存在时布尔语句出现意外行为

BASH:检查目录是否存在时布尔语句出现意外行为

我必须从设备中获取一些文件并将它们存储在具有特定名称的目录中。我正在编写一个脚本来执行此操作,但它所做的第一件事是检查具有所需名称的目录是否已存在。

设备版本决定了目录的名称,但格式不正确。我从我的设备中得到以下数字:NUM=10-2-2 我必须将其重新格式化为 10.2.2,所以我使用NUM=$(echo $NUM | tr "-" ".") 这是目录的名称。那么完整路径将是/var/www/myServer/10.2.2

但是,以下代码:

Filepath=/var/www/myServer/$NUM
if [ -d $Filepath ]; then
   echo the directory exists
else
    echo the directory does not exist
fi

总是告诉我目录不存在。但如果我直接声明变量Filepath(即Filepath=/var/www/myServer/10.2.2),我就会得到所需的结果。为什么会发生这种情况?

该命令的输出tr如下:

~$ <command-that-gets-version-number> | tr "-" "."
10.2.2

为什么会发生这种情况?任何想法都会有帮助。

我在 Ubuntu 11.x 上运行它

答案1

找到我的问题了。该行的结果是末尾<command-that-gets-version-number> | tr "-" "."留下了一个字符。我注意到这一点是因为当我执行时:输出显示最后一个字符是,即回车符。carriage return~$ printf %s "$NUM" | od -t x10d

相关内容