我正在尝试检查bash中是否存在符号链接。这是我尝试过的方法。
mda=/usr/mda
if [ ! -L $mda ]; then
echo "=> File doesn't exist"
fi
mda='/usr/mda'
if [ ! -L $mda ]; then
echo "=> File doesn't exist"
fi
然而,这是行不通的。如果'!‘被遗漏了,它永远不会触发。如果是“!”它每次都会触发。
发布于 2016-03-23 21:48:44
您可以使用以下命令检查符号链接是否存在以及是否未断开:
[ -L ${my_link} ] && [ -e ${my_link} ]
因此,完整的解决方案是:
if [ -L ${my_link} ] ; then
if [ -e ${my_link} ] ; then
echo "Good link"
else
echo "Broken link"
fi
elif [ -e ${my_link} ] ; then
echo "Not a link"
else
echo "Missing"
fi
-L
测试是否存在符号链接,是否断开。通过与-e
结合,您可以测试链接是否有效(指向目录或文件的链接),而不仅仅是它是否存在。
发布于 2011-04-24 05:31:56
也许这就是你要找的。检查文件是否存在以及是否不是链接。
尝试执行以下命令:
file="/usr/mda"
[ -f $file ] && [ ! -L $file ] && echo "$file exists and is not a symlink"
发布于 2017-01-06 11:04:34
使用readlink
怎么样?
# if symlink, readlink returns not empty string (the symlink target)
# if string is not empty, test exits w/ 0 (normal)
#
# if non symlink, readlink returns empty string
# if string is empty, test exits w/ 1 (error)
simlink? () {
test "$(readlink "${1}")";
}
FILE=/usr/mda
if simlink? "${FILE}"; then
echo $FILE is a symlink
else
echo $FILE is not a symlink
fi
https://stackoverflow.com/questions/5767062
复制相似问题