我有以下脚本示例:巴什脚本命令mkdir错误
#!/bin/bash
# Aborts the script on "simple command failure" (does not cover pipes)
set -e
# Makes sure we do not run the script outside the correct directory (i.e. the backup directory)
projects_directory='~/projects'
backup_drectory="${projects_directory}/backup/"
echo "Backup directory: ${backup_drectory}"
if [ ! -d "$projects_directory" ]; then
mkdir "$projects_directory"
echo "${projects_directory} created successfully"
fi
与下面的输出悲惨的失败了:
Backup directory: ~/projects/backup/
mkdir: cannot create directory `~/projects': No such file or directory
我不明白为什么。如果我在终端中手动输入mkdir ~/projects
命令,则会创建该目录。任何建议是最受欢迎的。
尝试用您的绝对主目录(/ home/username /)替换〜。哪个用户执行备份脚本(你使用的是cron作业?) – Gregor
我打算使用cron,是的。到目前为止,我正在通过终端手动测试它。 您的解决方案有效。你能向我解释为什么? 是否有任何解决方法,所以我不必将用户路径硬编码到脚本中? –
壳牌报价是你的敌人。你可以阅读shell如何处理单引号和双引号:http://mywiki.wooledge.org/Quotes。 – Telemachus