
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 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>
1 ochatokori May 4, 2019 via Android cron 有个坑就是 cron 执行的时候不像普通登录后的 shell 带有 /etc/profile 里面定义的环境变量 不知道你是不是这个问题 临时解决办法是在需要执行的 shell 脚本前面加个 source /etc/profile 或者 export 手动定义 |
2 alvinbone88 May 4, 2019 via Android shell 的问题 cron 默认使用 sh 来执行脚本,刚好 Debian 把 sh 链接到 dash 上了,而 dash 的 read 没有-n 这个选项 |
3 Iterator May 4, 2019 是个独立的小环境,PATH bash 都跟自己用 terminal 是不一样的 |
4 moa OP @ochatokori 试了加载变量 log 还是报错 |
5 moa OP |
6 moa OP @alvinbone88 搞定了 多谢 果然是这个问题导致的 |