【发布时间】:2019-03-23 04:53:45
【问题描述】:
我正在努力使用一个小的 bash shell 脚本,该脚本应该列出我的 csv 文件并使用 curl 将它们上传到外部服务。 当我将命令变量回显到控制台并执行它时,我工作正常, 但是当我在我的脚本中执行它时,它会抱怨一个额外的 qouta"
我的脚本是这样的
#!/usr/bin/bash
LOGDIR="/var/log/tyk/"
FILE_EXSTENSION_NAME="*.csv"
CURLCMD="curl -k -i -H"
PORT="9992"
ENDPOINT="/endpoint"
URL="https://localhost"
for i in `ls $LOGDIR$FILE_EXSTENSION_NAME`; do
filename=`echo $i | awk -F "/" ' { print $5 }'`
echo $filename
CMD="$CURLCMD \"filename: $filename\" -F \"data=@$LOGDIR$filename\" $URL:$PORT$ENDPOINT"
$CMD
done
当我运行它时,我得到以下输出
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:--0curl: (6) Could not resolve host: 2018-October-18-10.csv"; Unknown error
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
curl: (26) couldn't open file "/var/log/tyk/2018-October-18-10.csv""
如果我在脚本中执行 echo $CMD,我得到了
curl -k -i -H "filename: 2018-October-18-10.csv" -F "data=@/var/log/tyk/2018-October-18-10.csv" https://localhost:9992/endpoint
效果不错
我无法弄清楚我没有做错什么
【问题讨论】:
-
URL="https:localhost"- 这是一个错字吗?您收到的确切错误消息是什么?您显示无法打开文件的curl错误消息,但您谈到来自bash的“缺少引用”错误。这是什么? -
是的,它是 URL=localhost" 因为我更改了它,所以我没有公开真实的 URL。错误是 curl: (26) could't open file "/var/log/tyk /2018-October-18-10.csv"" 字符串末尾有两个配额,但在我的脚本中我只设置了一个。文件存在-rw-r--r--。 1 tyk tyk 1250 Oct 18 10:17 /var/log/tyk/2018-October-18-10.csv
-
请编辑您的原始问题以更正
URL=部分,并告诉我们您收到的确切错误消息。也许不是调用awk,而是想使用basename工具来获取文件名?此外,使用ls -1或更好的find来获取文件名列表。并在运行之前输出$CMD,以便您查看实际运行的内容。 -
出现错误是 curl: (26) could't open file "/var/log/tyk/2018-October-18-10.csv""