我正在编写一个脚本,将所有与bash相关的dotfiles符号链接到主目录中。我希望脚本检查文件名是否已经存在,以便我可以重命名/移动它们。
出于某种原因,我的Map
测试命令无法识别其中包含下划线的文件名。
测试已存在的文件时,此脚本:
if
输出:
#!/bin/bash
for name in bashrc bash_profile bash_aliases
do
filename=$HOME"/."$name
if [ -e "$filename" ]; then
echo "${filename} exists"
else
echo "${filename} doesn't exist"
fi
done
导致此行为的下划线是什么,以及如何解决?
答案 0 :(得分:1)
代码在发布时是正确的,并且下划线通常不是有问题的字符。
您提到您正在对文件进行符号链接 - 如果您确定文件存在,请验证它们是否没有损坏符号链接。如果链接的最终目标不存在,-e file
将为false。
可能导致此问题的其他因素包括:
bаsh_profile
,它有一个全宽低行而不是下划线。