分页: 1 / 1

[求助]请教一个文本替换问题

发表于 : 2019-11-15 13:26
chinaz
有a和b两个文件,a文件不定时更新内容。通过crontab计划任务每隔几分钟执行b文件。

cat a
http://news.baidu.com/

cat b
gnome-web-photo --mode=photo -t 30 -w 1440 --force ppp /home/user/picture/x.png

请用sed或者awk等实现一条命令将b文件里面的ppp替换成a文件里面的内容,命令执行完后的效果应该是:
gnome-web-photo --mode=photo -t 30 -w 1440 --force http://news.baidu.com/ /home/user/picture/x.png

因为需要在crontab计划任务中调用,所以无法识别变量,在网上搜了好久都是带变量的实现方法,请教能否不使用变量直接一行指令解决问题(或者两行三行也行)?提前感谢!

Re: [求助]请教一个文本替换问题

发表于 : 2019-11-15 16:19
astolia
chinaz 写了:
2019-11-15 13:26
因为需要在crontab计划任务中调用,所以无法识别变量
???怎么就不能识别变量了???


最简单的方式就是把a的内容放到命令行里面去

代码: 全选

gnome-web-photo --mode=photo -t 30 -w 1440 --force "$(cat /path/to/a)" /home/user/picture/x.png

Re: [求助]请教一个文本替换问题

发表于 : 2019-11-15 16:48
chinaz
astolia 写了:
2019-11-15 16:19
chinaz 写了:
2019-11-15 13:26
因为需要在crontab计划任务中调用,所以无法识别变量
???怎么就不能识别变量了???


最简单的方式就是把a的内容放到命令行里面去

代码: 全选

gnome-web-photo --mode=photo -t 30 -w 1440 --force "$(cat /path/to/a)" /home/user/picture/x.png
谢谢楼上的帮助。试过了,这样手动运行没有问题,但是放进crontab -e里面,就不执行,别的不含变量的计划任务都正常执行。

Re: [求助]请教一个文本替换问题

发表于 : 2019-11-15 17:01
astolia
那你看过crontab的报错信息没有?
安装本地邮件服务,sudo apt install dma bsd-mailx,然后用mail打开邮箱查看报错信息
我觉得原因还是环境变量不足,特别是DISPLAY

Re: [求助]请教一个文本替换问题

发表于 : 2019-11-15 17:14
chinaz
syslog里面循环显示下面的信息,没找到其他相关日志。。。
Nov 15 17:12:01 print CRON[8606]: (user) CMD (/usr/bin/gnome-web-photo --mode=photo -t 30 -w 1440 --force "$(more /home/user/picture/picture.txt)" /home/user/picture/aaa.png)
Nov 15 17:12:01 print cron[7000]: Please install an MTA on this system if you want to use sendmail!
Nov 15 17:12:01 print CRON[8604]: (user) MAIL (mailed 242 bytes of output but got status 0x00ff from MTA#012)

Re: [求助]请教一个文本替换问题

发表于 : 2019-11-15 17:17
astolia
我上面第二行已经跟你说了怎么看crontab的报错信息,就怕你不知道。你还跑去翻syslog。
而且syslog里也说了“Please install an MTA on this system”

Re: [求助]请教一个文本替换问题

发表于 : 2019-11-15 17:27
chinaz
mail中就只是不停显示下面的内容:
U606 user Fri Nov 15 17:23 17/531 *** SECURITY information for print ***
U607 root Fri Nov 15 17:23 25/964 Cron <[email protected]> /usr/bin/gnome-web-photo --mode=photo -t 30 -w 1440 --force "$(more /home/user/picture/picture.txt)" /home/user/picture/aaa.png
U608 root Fri Nov 15 17:24 25/968 Cron <[email protected]> /usr/bin/gnome-web-photo --mode=photo -t 30 -w 1440 --force "$(more /home/user/picture/picture.txt)" /home/user/picture/aaa.png
U609 root Fri Nov 15 17:25 25/968 Cron <[email protected]> /usr/bin/gnome-web-photo --mode=photo -t 30 -w 1440 --force "$(more /home/user/picture/picture.txt)" /home/user/picture/aaa.png
>N610 root Fri Nov 15 17:26 23/957 Cron <[email protected]> /usr/bin/gnome-web-photo --mode=photo -t 30 -w 1440 --force "$(more /home/user/picture/picture.txt)" /home/user/picture/aaa.png
&

Re: [求助]请教一个文本替换问题

发表于 : 2019-11-15 17:44
astolia
astolia 写了:
2019-11-15 17:01
用mail打开邮箱查看报错信息
运行mail只是打开了邮箱,具体报错信息还需要你打开邮件才能看到。
你运行mail后最上面肯定有一句“Type ? for help”,不会用mail看邮件的话就输个?看一下帮助呗

Re: [求助]请教一个文本替换问题

发表于 : 2019-11-15 21:03
chinaz
>N607 root Fri Nov 15 21:03 23/911 Cron <[email protected]> /usr/bin/gnome-web-photo --mode=photo -t 30 -w 1440 --force "$(more /home/user/picture
&
Message 607:
From [email protected] Fri Nov 15 21:03:01 2019
From: root (Cron Daemon)
To: user
Subject: Cron <[email protected]> /usr/bin/gnome-web-photo --mode=photo -t 30 -w 1440 --force "$(more /home/user/picture/picture.txt)" /home/user/picture/aaa.png
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/user>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=user>
Date: Fri, 15 Nov 2019 21:03:01 +0800

Unable to init server: M-fM^W\240M-fM-3M^UM-hM-?M^^M-fM^NM-%M-oM-<M^ZM-fM^KM^RM-gM-;M^]M-hM-?M^^M-fM^NM-%
M-fM^W\240M-fM-3M^UM-fM^IM^SM-eM-<M^@M-fM^XM->M-gM-$M-:M-oM-<M^Z
M-gM^TM-(M-fM-3M^UM-oM-<M^Zgnome-web-photo [--mode=photo|thumbnail|print] [...]
Usage: gnome-web-photo [-c CSSFILE] [-d DELAY] [-t TIMEOUT] [--force] [-w WIDTH] [--file] URI|FILE OUTFILE

Re: [求助]请教一个文本替换问题

发表于 : 2019-11-15 22:56
astolia
这不很明显了吗?根本就和$()没关系
cron运行时只有4个环境变量SHELL,HOME,PATH,LOGNAME。导致gnome-web-photo运行时连不到xserver。先把DISPLAY补上再说,如果还缺再一个个试

Re: [求助]请教一个文本替换问题

发表于 : 2019-11-16 0:06
chinaz
在crontab -e里面加上了DISPLAY=:0.0还是无法运行。。。

MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Cron-Env: <DISPLAY=:0.0>
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/user>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=user>
Date: Sat, 16 Nov 2019 00:02:01 +0800

M-eM^OM^BM-fM^UM-0M-hM-?M^GM-eM-$M^ZM-oM-<M^A
M-gM^TM-(M-fM-3M^UM-oM-<M^Zgnome-web-photo [--mode=photo|thumbnail|print] [...]
Usage: gnome-web-photo [-c CSSFILE] [-d DELAY] [-t TIMEOUT] [--force] [-w WIDTH] [--file] URI|FILE OUTFILE

Re: [求助]请教一个文本替换问题

发表于 : 2019-11-16 12:01
astolia
/home/user/picture/picture.txt内容是什么?你检查过是否包含控制字符了吗?还有你为什么要用more

Re: [求助]请教一个文本替换问题

发表于 : 2019-11-16 12:55
chinaz
astolia 写了:
2019-11-16 12:01
/home/user/picture/picture.txt内容是什么?你检查过是否包含控制字符了吗?还有你为什么要用more
/home/user/picture/picture.txt内容是网页链接,最终效果是用户在smb共享文件夹里面打开这个文件将网址粘贴上保存,一分钟后,自动在当前文件夹生成这个网页的截图,gnome-web-photo是网页截图工具。至于用more。。。则是限于本人学识,只知道这个。。。

Re: [求助]请教一个文本替换问题

发表于 : 2019-11-17 1:00
astolia
我是让你检查文件中是否包含控制字符,又不是让你说你想干什么。
我严重怀疑那个文件的内容包含有控制字符导致命令行解析出错。比如是在windows/mac os上编辑的,添加了换行,引入了回车符,shell默认不把回车符当成空白字符,就出错了
至于more的问题,我在2楼就给你写了,最好用cat

Re: [求助]请教一个文本替换问题

发表于 : 2019-11-17 22:18
chinaz
astolia 写了:
2019-11-17 1:00
我是让你检查文件中是否包含控制字符,又不是让你说你想干什么。
我严重怀疑那个文件的内容包含有控制字符导致命令行解析出错。比如是在windows/mac os上编辑的,添加了换行,引入了回车符,shell默认不把回车符当成空白字符,就出错了
至于more的问题,我在2楼就给你写了,最好用cat
谢谢提醒,问题解决。从头梳理了一遍,picture.txt使用unix格式的空文本,又重新构思重写了一遍添加到crontab的脚本文件。现在可以正常执行了。
贴出来分享一下:
#!/bin/bash
cd /home/user/picture/
/usr/bin/gnome-web-photo --mode=photo -t 30 -w 1440 --force --display=:0.0 "$(cat /home/user/picture/picture.txt)" /home/user/picture/"$(date +\%Y\%m\%d\%H\%M\%S)".png
chmod 777 *.png
cat /dev/null > /home/user/picture/picture.txt
find /home/user/picture/ -name "*.png" -size -10k -exec rm -rf {} \;