Linux执行.sh脚本提示密码文件不存在但文件实际存在问题
故障原因
~ 符号的家目录路径展开是shell的解析规则,只有当~不被双引号包裹时才会生效。你给--password传的路径用双引号把~整个包在里面,程序接收到的路径是字面字符串~/RPI/filename.sec,不会自动替换成/home/你的用户名/RPI/filename.sec这类真实绝对路径,自然会报文件不存在。
之前能正常运行,大概率是之前的参数写法没有把~放在双引号内部,这次调整参数时加的引号触发了这个解析问题。
修复方案
任选一种写法替换原来的参数即可:
- 用
$HOME环境变量替代~,该变量在双引号内也能被正常解析,兼容性最好:--password "$HOME/RPI/filename.sec" - 把
~移到双引号外部,仅给可能含特殊字符的路径部分加引号:--password ~/"RPI/filename.sec" - 如果路径中没有空格、shell特殊字符,直接去掉路径外层的双引号:
--password ~/RPI/filename.sec - 直接写死文件的绝对路径,替换
~为对应用户的家目录完整路径,比如用户名为pi时:--password "/home/pi/RPI/filename.sec"
校验方式
改完参数后,可以先在终端执行echo 你写的完整路径参数,如果输出的路径和你实际存放文件的绝对路径完全一致,再执行脚本就不会报路径不存在的错误。
内容的提问来源于stack exchange,提问作者Mandy Lores
相关产品推荐
相关产品推荐

