0

我的目标是在格式化和拆分的 txt 文件中从 mycroft 技能“列表管理器”中获取一个/所有列表,以将它们传输到我的 Nextcloud-Notes-Skill。当然,嘿 Google 和 Alexa 是最简单的选择,但我不喜欢它们。
我编写的 bash 脚本在终端中完成了这项工作(格式化和拆分)。

这是 mycroft 技能使用的文本文件...
{"Remind me": ["remind_item_1",​​ "remind_item_2"], "shopping": ["mate", "book", "keyboard", "bavarian beer"]}

我得到这两个文本文件
第一个文本文件的名称:提醒我

  • []提醒_item_1
  • []提醒_item_2

第二个文本文件的名称:shopping

  • [ ] 伴侣
  • [ ] 书
  • [ ] 键盘
  • [ ] 巴伐利亚啤酒

在我们转到下面的代码之前,这里有一些信息。首先,我怀疑有更好的方法来获得相同的结果。我是一个白手起家的“程序员”,当然不是专业人士,当我称自己为程序员时,我不想冒犯任何人。其次,我想用板载资源来做这件事。第三,我喜欢学习新事物,而且我从来没有做过 bash 脚本。

对已更改文件的监视执行“incron”。每次我更改列表时,incron 都会启动一个脚本:

/opt/mycroft/skills/list-manager.lb803/data.json        IN_MODIFY       /bin/bash /home/pi/my_directory/notes_skill.sh

Incron 有效,它启动下面的脚本,但只启动第一个命令 (copy-command)。我的目录中每次都有文件“data_list_manager.txt”,但仅此而已。允许 Incron 像用户“pi”和“root”一样行事。所有文件都具有 pi 或 root 权限。它在“cp”命令之后停止。我不知道为什么。
在这个版本的代码中,结果只有两个列表。目前还可以,如果我有问题的解决方案,我会更改它。
命令“echo”“sed”之前的目录引用/bin/...是,因为我已经读过“incron”的工作方式与终端不同,并且需要命令的目录名称。
非常感谢您的支持!

#!/bin/bashcp 
cp /opt/mycroft/skills/list-manager.lb803/data.json /home/pi/my_directory/data_list_manager.txt
#wait
foo="$(/bin/cat /home/pi/my_directory/data_list_manager.txt | /bin/sed s/[[{}\"]//g)"
foo="$(/bin/echo "$foo" | /bin/sed -e s/,[[:space:]]/@@/g -e s/:[[:space:]]/@@@@/g -e s/[]]/@@@@/g)"
foo="$(/bin/echo "$foo" | /bin/sed -e s/@@@@@@/\\n/g -e s/@@@@/\\n@@@/g)"
/bin/echo "$foo" >/home/pi/my_directory/splitfile.txt
/usr/bin/split -l2 /home/pi/my_directory/splitfile.txt
#wait
nam="$(/bin/cat /home/pi/my_directory/xaa | /bin/sed q)"
foo="$(/bin/cat /home/pi/my_directory/xaa | /bin/sed '2!d')"
foo="$(/bin/echo "$foo" | /bin/sed -e s/@@@/\-\ [\ ]\ /g -e s/@@/\\n\-\ [\ ]\ /g)"
/bin/echo "$foo" >/home/pi/my_directory/Listen/"$nam".txt
nam="$(/bin/cat /home/pi/my_directory/xab | /bin/sed q)"
foo="$(/bin/cat /home/pi/my_directory/xab | /bin/sed '2!d')"
foo="$(/bin/echo "$foo" | sed -e s/@@@/\-\ [\ ]\ /g -e s/@@/\\n\-\ [\ ]\ /g)"
/bin/echo "$foo" >/home/pi/my_directory/Listen/"$nam".txt
nam="$(/bin/cat /home/pi/my_directory/xac | /bin/sed q)"
foo="$(/bin/cat /home/pi/my_directory/xac | /bin/sed '2!d')"
foo="$(/bin/echo "$foo" | /bin/sed -e s/@@@/\-\ [\ ]\ /g -e s/@@/\\n\-\ [\ ]\ /g)"
/bin/echo "$foo" >/home/pi/my_directory/Listen/"$nam".txt
nam="$(/bin/cat /home/pi/my_directory/xad | /bin/sed q)"
foo="$(/bin/cat /home/pi/my_directory/xad | /bin/sed '2!d')"
foo="$(/bin/echo "$foo" | /bin/sed -e s/@@@/\-\ [\ ]\ /g -e s/@@/\\n\-\ [\ ]\ /g)"
/bin/echo "$foo" >/home/pi/my_directory/Listen/"$nam".txt
4

0 回答 0