我正在寻找从变量末尾删除'/',以便我可以检查一个文件是否是符号链接到目录。我已经尝试了几乎所有我能想到的或在网上找到的方法,有没有我失踪的东西?从变量末尾删除'/' - bash
如果我检查一个文件是否是符号链接,并且结尾是'/',它将它视为一个目录。这可以通过运行来检查:
if [ -L symtest/ ] ; then echo "symlink"; fi
其中symtest是目录的符号链接。以上输出什么也没有。
当我删除了“/”,它工作正常,并输出“符号链接”:
if [ -L symtest ] ; then echo "symlink"; fi
我的问题是,有没有办法,当它作为A的传递,从名称中删除“/”变量的功能?
的功能将类似于:
function is_it_a_symlink() {
if [ -L $1 ] ; then
echo "This file is a symlink!"
else
echo "This file is not a symlink!"
fi
}
在此先感谢。
注意POSIX的[路径解析](http://pubs.opengroup.org/ onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_13)规则要求您遵守的行为。 –
@Alexander,请避免将ABS作为一种资源 - 它具有展示不良行为的长期声誉。 (使用免费的'function'关键字 - 它破坏了与POSIX sh的兼容性,但不增加标准化函数声明语法的值 - 就是onesuch)。 –
@亚历山大,......实际上,在您链接的特定页面中还存在更严重的不良做法。 'directorys = $ @'失去边界信息 - 在使用它之后,无法区分'./yourscript“foo bar”“baz qux”'和'./yourscript foo bar baz qux'; 'linkchk'函数缺少引号(需要是“$ 1”/ *'和'linkchk“$ element”')等等。 –