gpt4 book ai didi

xml - 使用 incron 和 bash 脚本调用 REST API?

转载 作者:太空宇宙 更新时间:2023-11-04 12:56:23 24 4
gpt4 key购买 nike

我正在使用 incron 检查 XML 文件是否已上传到 Depot 文件夹中,使用:

/home/parallels/Desktop/Depot IN_CLOSE_WRITE /home/parallels/Desktop/Depot/add.sh $#

当检测到新文件时,将调用以下 bash 脚本 add.sh(位于 Depot 文件夹中):

#!/bin/bash
fileContent="$(cat $1)"

curl \
--header "Content-type: application/json" \
--request POST \
--data '{
"user": "user@mail.com",
"fileName": "'"$1"'",
"content": "'"$fileContent"'"
}' \
http://url/of/the/api

$1 变量包含文件名,$fileContent 变量包含文件的 XML 内容。

问题是,当我从命令行手动调用 bash 脚本时(当 Depot 文件夹中已经有一个 XML 文件时)使用:

./add.sh test.xml

一切正常。但是,当我尝试通过将一个新的 XML 文件放入文件夹中来触发脚本时,它什么也没做,尽管它出现在日志中,tail/var/log/syslog 命令给出了结果如下:

(parallels) CMD (/home/parallels/Desktop/Depot/add.sh test.xml)

我让它工作的唯一方法(通过在文件夹中放置一个文件)是当内容变量已经在脚本中设置时,就像这样:

#!/bin/bash
fileContent="$(cat $1)" <=== Not used anymore in this case

curl \
--header "Content-type: application/json" \
--request POST \
--data '{
"user": "user@mail.com",
"fileName": "'"$1"'",
"content": "
<node>
<subnode>
content
</subnode>
</node>
"
}' \
http://url/of/the/api

我在这里遗漏了什么吗?我应该使用 cat 之外的其他方法来检索 XML 内容吗?

最佳答案

我成功了!

我将 incron 命令更改为:

/home/parallels/Desktop/Depot IN_CLOSE_WRITE /home/parallels/Desktop/Depot/add.sh #@/$#

和 bash 脚本:

#!/bin/bash
fileContent=`cat $1`
fileName=$(basename $1)

curl \
--header "Content-type: application/json" \
--request POST \
--data '
{
"user": "user@mail.com",
"filename": "'"$fileName"'",
"content": "'"$fileContent"'"
}' \
http://url/of/the/api

我需要将文件的完整路径发送到 bash 脚本(使用 $@/$#),以便 cat 函数正常工作。

关于xml - 使用 incron 和 bash 脚本调用 REST API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35626524/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com