V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
moa
V2EX  ›  问与答

crontab 环境变量问题,求助

  •  
  •   moa · 2019-05-04 01:38:52 +08:00 · 1735 次点击
    这是一个创建于 2032 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Linux 新手,问个基础问题. 搭了个本地 IPV6 的 DDNS 服务,用 Crontab 定时执行. 目前出现问题,.sh 文件手动执行无任何问题,Crontab 执行持续报错.

    把报错结果 LOG 输出,Cat 显示为:

    57: read: Illegal option -n


    查找代码结构.

    第 57 行为 while read -n1 c

    各位大大帮忙看看.这个问题怎么解决?搞了好久没搞定.

    是需要把 Read 的环境变量导入么,read 的默认路径在哪,系统 Debian.?????


    相关上下代码为:

    current_ipv6=nslookup -query=AAAA $aliddnsipv6_name 2>&1 #echo $current_ipv6

    current_ipv6=echo "$current_ipv6" | grep 'Address: ' | tail -n1 | awk '{print $NF}' echo $current_ipv6

    if [ "$?" -eq "0" ] then current_ipv6=echo "$current_ipv6" | grep 'Address: ' | tail -n1 | awk '{print $NF}' echo $current_ipv6

    if [ "$ipv6" = "$current_ipv6" ]
    then
        echo "skipping"
    fi 
    

    fix when A record removed by manual dns is always update error

    else unset aliddnsipv6_record_id fi

    timestamp=date -u "+%Y-%m-%dT%H%%3A%M%%3A%SZ"

    urlencode() { # urlencode <string> out="" while read -n1 c do case $c in [a-zA-Z0-9._-]) out="$out$c" ;; *) out="$outprintf '%%%02X' "'$c"" ;; esac done echo -n $out }</string>

    6 条回复    2019-05-04 17:17:27 +08:00
    ochatokori
        1
    ochatokori  
       2019-05-04 02:29:47 +08:00 via Android
    cron 有个坑就是 cron 执行的时候不像普通登录后的 shell 带有 /etc/profile 里面定义的环境变量
    不知道你是不是这个问题

    临时解决办法是在需要执行的 shell 脚本前面加个
    source /etc/profile
    或者 export 手动定义
    alvinbone88
        2
    alvinbone88  
       2019-05-04 03:04:55 +08:00 via Android   ❤️ 2
    shell 的问题
    cron 默认使用 sh 来执行脚本,刚好 Debian 把 sh 链接到 dash 上了,而 dash 的 read 没有-n 这个选项
    Iterator
        3
    Iterator  
       2019-05-04 08:36:21 +08:00
    是个独立的小环境,PATH bash 都跟自己用 terminal 是不一样的
    moa
        4
    moa  
    OP
       2019-05-04 10:09:05 +08:00
    @ochatokori 试了加载变量 log 还是报错
    moa
        5
    moa  
    OP
       2019-05-04 11:56:34 +08:00
    @alvinbone88 这种有什么好的解决方案么

    cron 前面加了 source /etc/profile; 还是不行
    moa
        6
    moa  
    OP
       2019-05-04 17:17:27 +08:00
    @alvinbone88 搞定了 多谢 果然是这个问题导致的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4283 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 05:30 · PVG 13:30 · LAX 21:30 · JFK 00:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.