【发布时间】:2019-01-06 01:10:14
【问题描述】:
鉴于下面的 bash 代码,我正在定义一个变量来表示一个文件夹,并且我正在检查它是否是一个文件夹。我什至可以使用变量名浏览它。
这里有一个小问题,我用'/'作为最后一个字符定义了文件夹的名称,因为制表符完成以这种方式完成了字符串。
#! /bin/bash
VAR_LOG='/var/log/'
echo $VAR_LOG
echo $PWD
echo "browsing to log directory"
cd $VAR_LOG
echo $PWD
if [ -d $VAR_LOG ]; then
echo "$VAR_LOG is a directory"
fi
if [ ${VAR_LOG} != ${PWD} ]
then echo not same
else
echo same
fi
但是正如你所看到的,$PWD 定义了相同的路径/文件夹,没有'/'作为最后一个字符,字符串比较结果为假。即使我在同一个文件夹中,cd $LOG_DIR 也会将我带到同一个文件夹。
User1-MBP:log User1$ $HOME/tmp.sh
/var/log/
/Users/User1
browsing to log directory
/var/log
/var/log/ is a directory
not same
那么,在 bash 中使用目录的最佳方式是什么?将它们保留为字符串有点容易出错。
(注意:这是一个 MacOS 系统 - 我不确定它是否应该有所作为)
非常感谢..
【问题讨论】:
标签: linux bash macos scripting directory