出于上下文考虑,我正在开发一个系统,该系统将允许“远程”访问NVidia Xavier。不幸的是,除非将整个设备拆开,否则显示端口在其当前外壳中被完全阻塞。提供一个USB端口,该端口用于连接无线键盘和鼠标。我已经编写了一个可以通过SSH执行的Gstreamer管道,它将捕获显示并将其流式传输到另一台本地计算机。
我遇到的问题是,由于该单元是便携式的,它所连接的网络以及随后的IP将不断变化,但是我需要知道它能够通过SSH进入该单元。
我正在尝试编写一个(我认为很简单的)bash脚本,该脚本将在启动时通过网络钩将时间戳和设备的IP发送到Slack通道,该钩实际上是以下命令(IP和Slack URL)概括):
curl -X POST -H 'Content-type: application/json' --data '{"text":"Tue Jul 14 15:26:50 EDT 2020 IP: XX.X.X.XX"}' https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
每次运行脚本时,JSON有效负载都会更改,具体取决于hostname -I
和date
的结果。
我尝试使用以下方法创建包含所需数据的数组:
command=( -X POST -H 'Content-type: application/json' --data \'{\"text\":\")
command+=("$(date)")
command+=("$(hostname -I)")
command+=(\"}\' https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX)
curl command
但收到错误curl: (6) Could not resolve host: command
。
我几乎没有编写bash脚本的经验,并且可能会错过其他人难以置信的东西。但是,使用echo "${command[*]}"
确实会显示与工作命令匹配的输出。任何建议将不胜感激。
答案 0 :(得分:1)
在bash中使用变量时,这是一个常见错误-设置变量时,它们不会以$
为前缀,但是在引用它们时,必须以$
为前缀为了扩大。因此,根据您的情况,您可能希望使用:curl $command
而不是curl command