在Shell脚本中找不到date命令。

9

以下是我的备份脚本backup.sh,当我执行该脚本时,出现错误"date: command not found"。我已检查了=和参数之间没有空格。有人能够解释这个错误吗?谢谢。

x00004:/home/ # cat backup.sh 
#!/bin/sh
set +x

source ./conf.sh

if [ $# != 2 ] ; then
    echo " Usage: $0 [sftp user] [sftp pwd]"
    exit 1;
fi

DATE=`date +%y-%m-%d--%H:%M:%S`
echo "${DATE}"
file=test.tar.gz
echo "Starting to backup files..."

#to backup files to sftp server

x00004:/home/ # ./backup.sh usr pwd
./backup.sh: line 11: date: command not found

Starting to backup files...
x00004:/home/poc/src # 

检查 PATH 环境变量。 - Ed Heal
展示你的conf.sh文件,它必须限制路径到你当前的目录。 - Satya
1
可能是Bash-日期命令和空格的重复问题。 - Marged
2个回答

6

如果命令不在$PATH目录中,Shell将无法找到这些命令。快速解决方法:用/bin/date替换date命令。然而,在conf.sh或backup.sh中也可能出现类似的问题,因此更全局的解决方法是在脚本开始处使用echo "$PATH",找出缺少的部分并进行修复,例如:PATH=/bin:$PATH


2

最好的方法是使用名为command -v的bash/shell命令,动态检查您的日期路径在哪里。

DATE_BIN=$(command -v date)
DATE=`${DATE_BIN} +%y-%m-%d--%H:%M:%S`

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接