中打印1
我在shell脚本中使用以下命令:
echo "1" > log.txt
if [ `ifconfig eth0 | grep 'inet addr' | cut -d ":" -f 2 |
awk {'print $1'}` = 'ipaddress' ] && [ `whoami` = 'userid' ]; then
echo "2" >> log.txt
crontab -l > Cron.txt
echo "3" >> log.txt
fi
脚本在手动运行时运行良好,但在通过cron安排时,如果。
cron entry: 31 11 * * * /home/abc/cron_backup.sh
log.txt手册运行中的输出:在log.txt中打印1,2,3cron:在log.txt
我建议将命令解释器行#的第一行作为脚本的第一行!为了确保SH会运行
之后,您是否考虑使用双括号语法[[]?
#!/bin/sh
echo "1" > log.txt
if [[ `ifconfig eth0 | grep 'inet addr' | cut -d ":" -f 2 |
awk {'print $1'}` = 'ipaddress' ]] && [[ `whoami` = 'userid' ]]; then
echo "2" >> log.txt
crontab -l > Cron.txt
echo "3" >> log.txt
fi
问题可能在于ifconfig,grep,cut awk和whoami呼叫。当您从命令行运行时,您的个人资料具有路径设置。
从cron运行时,它没有您的个人资料。如果您修改路径变量以指向这些程序的位置,那么从Cron运行时就不会进行更改。
尝试将每个命令的完整路径放置在整个命令中,并在cron运行时会产生任何区别。