You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Bash变量表现与显式字符串不同?路径变量失效问题排查

问题原因及解决办法

核心问题1:使用了中文引号

你给变量赋值时用了中文双引号“”,而非Shell能识别的英文双引号""。中文引号会被当作字符串的一部分,导致FILE_DESTINATION的实际值包含开头的中文引号,且路径里的~在引号中不会被解析为用户家目录,Shell自然无法识别这个无效路径。

核心问题2:变量赋值未闭合引号

FILE_DESTINATION的赋值行末尾缺少闭合的引号,这会导致Shell解析时出现语法错误,进一步干扰路径的正常识别。

修正后的脚本

OUTPUT_DATE=$(date +"%Y%m%d_%H%M%S")
LIVE_DATABASE="MyDatabase"
FILE_DESTINATION=~/apps/path/databases/dump_$OUTPUT_DATE.sql

mysqldump -u foobar -p123456 -h example.com -P 1234 $LIVE_DATABASE > $FILE_DESTINATION

如果要使用引号包裹路径,建议用$HOME代替~($HOME在引号中仍会被解析为家目录),写法如下:

OUTPUT_DATE=$(date +"%Y%m%d_%H%M%S")
LIVE_DATABASE="MyDatabase"
FILE_DESTINATION="$HOME/apps/path/databases/dump_$OUTPUT_DATE.sql"

mysqldump -u foobar -p123456 -h example.com -P 1234 $LIVE_DATABASE > $FILE_DESTINATION

内容的提问来源于stack exchange,提问作者dangvy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 16:27:17