【问题标题】:BASH SCRIPT output doesn't export in fileBASH SCRIPT 输出不会导出到文件中
【发布时间】:2022-01-03 07:25:57
【问题描述】:

我只是坚持使用调用 ws 命令(网络套接字)的自编码应用程序,我正在尝试导出输出。我还想在从 JSON 后端开发的 API 输入一段时间后完成 wscat 退出

#!/bin/bash
while getopts a:c: flag
do
    case "${flag}" in
        a) accesskey=${OPTARG};;
    c) clientnodeid=${OPTARG};;     
    esac
done
master="wscat -c ws://localhost:8091/ws/callback -H accessKey:$accesskey -H clientNodeId:$clientnodeid"
sleep 15
eval $master
final=$(eval echo "$master")
echo $final >>logfile.log
ps -ef | grep wscat | grep -v grep | awk '{print $2}' | xargs kill
#curl -X POST --data "$final" -k "https://localhost:7460/activate" -H "accept: application/json" -H "accessKey:$accesskey" -H "clientNodeId:$clientnodeid" -H "Content-Type: application/json" -H "callbackRequested:true"
exit 

我想调用然后从 wscat 输出以通过 curl 发送 当我手动运行脚本时它成功了,但是当我从另一个应用程序(java)调用它时它正在运行但不生成日志。

总之,我想将 $final 导出到文本文件,我应该将该文本文件导入到 curl 调用的 --data 中

【问题讨论】:

  • 顺便说一句:你可以用pkill wscat替换ps -ef | grep wscat | grep -v grep | awk '{print $2}' | xargs kill
  • 将完整路径添加到logfile.log?
  • 谢谢!您是否有一些 cmets 为什么它不能从 master= 变量生成完全输出?我都试过了......当我手动运行时它保存到 /root 目录,没关系吗?
  • final=$(eval echo "$master")final=$master 相同。由于echo,它不会执行wscat
  • 如果要捕获wscat的输出,请使用final=$(eval "$master")

标签: bash sockets curl websocket ws


【解决方案1】:

基于@Barmar's comment修复:

所有这些变量都让这件事变得过于复杂。做吧

eval "$master" >> logfile.log

【讨论】:

    猜你喜欢
    • 2011-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多