shell - 波浪号 (~/) 无法处理 Shell 脚本中的 if then 语句

标签 shell file home-directory tilde-expansion

这个问题在这里已经有了答案:





tilde expansion in environment variable

(2 个回答)


7年前关闭。




我有以下脚本

file=${file:-letsdump.sh}    
checkfile="~/mysql_backup/$file"
if [ -e "$checkfile" ]; then
mv ~/mysql_backup/$file ~/mysql_backup/$file-bak-$(date +%d%m%Y_%H%M).bak
else
echo 'file doesnt exist'   
fi

我知道我的文件在那里,我想这可能与 ~/?

它永远找不到文件

最佳答案

双引号(真的,任何引号)阻止 ~从被扩大。改用:

checkfile=~/mysql_backup/"$file"

...或者,甚至更好,使用 $HOME在所有脚本中,并考虑 ~成为仅供交互/人类使用的设施。

关于shell - 波浪号 (~/) 无法处理 Shell 脚本中的 if then 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27238491/

相关文章:

shell - 为什么在 shell 脚本中使用 $HOME 超过 ~ (波浪号)?

linux - 创建文件 shell 脚本

linux - 如何使用 wget 检查 HTTP 是否返回 HTTP/1.1 200 OK

asp.net - 如何使用 Razor 链接到 ASP.NET MVC 4 中的文件?

python - 如何从文件中读取每一行并将该行输出到另一个具有扩展名的文件

GnuPG 主目录

linux - 如何将 Jenkins 主目录从/var/lib 更改为 app 并为原始位置创建符号链接(symbolic link),因为工作不会受到影响

shell - 识别文件夹的构建类型

linux - 使用 Curl 命令行实用程序并行下载

html - 使用文件 ://in the internet