0

私は現在、現在のタイムスタンプとシステム (Ubuntu 18.04 LTS を実行している) の IP を、以下に示すように webhook を使用して Slack チャネルに送信する bash スクリプトに取り組んでいます。

##!/bin/bash

command=(curl -X POST -H \'Content-type: application/json\' --data \'{\"text\":\")
command+=("$(date)")
command+=(" IP: ")
command+=("$(hostname -I)")
command+=(\"}\' https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX)
"${command[@]}"

これは、変数のタイムスタンプと IP を許可しながら、次の作業コマンドを複製することを目的としています。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

これにより、大量のエラーが返されます (この投稿では、IP ホスト名を手動で X に変更しました)。

curl: (6) Could not resolve host: application
curl: (3) Port number ended with ':'
curl: (3) Port number ended with ' '
curl: (3) Host name 'X.X.X.XX ' contains bad letter
curl: (3) [globbing] unmatched close brace/bracket in column 2

で置き換え"${command[@]}"echo "${command[@]}" | xclip -selection clipboard"から手動でターミナルに貼り付ける (右クリック -> 貼り付け) と完全に機能することを確認できました。残念ながら、使用する最初の考えはxclip -selection clipboard -o、同じ方法で文字列を返すだけのようecho "${command[@]}"です。

プログラムでクリップボードの内容をコマンドとしてシェルに貼り付けて実行する方法、または"${command[@]}"文字列を実行するための最初の呼び出しを調整する方法はありますか? 私が見逃した明らかに優れたアプローチが存在する場合は、遠慮なく教えてください

これが見た人にとって些細なことである場合は、事前に謝罪しますが、私は Linux システムと bash スクリプトの両方に非常に慣れていません。どんな助けでも大歓迎です。

4

1 に答える 1