仅通过比较这些变量无法检查:
d1=/home/
d2=/home/user/../
if [ "$d1" == "$d2" ]
then
echo true
else
echo false
fi
... outputs false
让我们假设:d1
和d2
,它们都是文件系统上的目录路径,并指向同一目录。但是,它们的编写方式与/home/
和/home/user/../
不同。因此,检查相等字符串的简单操作在这里不起作用。
受到问题的启发:
在答案中:
for %%A in ("%d1%") do for %%B in ("%d2%") do if "%%~fA"=="%%~fB" (echo true) else (echo false)
答案 0 :(得分:3)
var1="/home/ps/temp/.."
var2="/home/ps/"
if [ "$(readlink -f "$var1")" == "$(readlink -f "$var2")" ];then
echo "they are pointing to same directory...."
else
echo "NOOOOO they are different"
fi
来自man readlink
:
-f, - canonicalize
通过递归地跟随给定名称的每个组件中的每个符号链接来规范化;除了最后一个组件之外的所有组件必须存在
答案 1 :(得分:1)
尝试使用stat命令报告inode编号。使用尾部反斜杠确保任何符号链接都被解除引用。
inode_1=`stat -f "%i" ../../d1/`
inode_2=`stat -f "%1" /path/to/d2/which/links/to/d1/`
[[ $inode_1 -eq $inode_2 ]] && echo "true" || echo "false"