Linuxスクリプトbash 1行に貼り付ける方法

Linuxスクリプトbash 1行に貼り付ける方法

次のテキストファイルがあります。

k-opp- -l fi -s linux -a BHHHHH7 -d 22.22.222.22 -g ai
k-opp- -l fi -s linux -a BHHHHH8 -d 222.22.22.22 -g ai
k-opp- -l fi -s linux -a BHHHHH9 -d 222.222.22.222 -g ai

私はいくつかのスクリプトを作成しました:

#!/bin/sh
file=list.txt
while read line
do
  echo $line |grep -o -P '(?<=-a).*(?=-d)' >>somefile.txt
  $line <checkcon.sh >>somefile.txt
done < "$file"

このスクリプトはsshマイコンピュータに送信され、2番目のスクリプトを実行して必要な情報を取得します。

これ質問出力は次のとおりです。

BHHHHH7 
eth:    inet 22.22.222.22
BHHHHH8 
eth:    inet 222.22.22.22
BHHHHH8 
eth:    inet 222.222.22.222

私がしたいこと:

BHHHHH7 eth:    inet 22.22.222.22
BHHHHH8 eth:    inet 222.22.22.22
...continues..

スクリプトを1行で印刷する方法を知っている人がいます。よろしくお願いします:)

ベストアンサー1

コマンド置換の使用:

echo "$(echo $line |grep -o -P '(?<=-a).*(?=-d)' ) $(echo abc)" >> some_file_to_append_next_line_to

2番目の部分を変更する必要があります。データからコマンドを実行せずにテストできるように変更しました。

基本的な形式は次のとおりです。

command4 "$(command1) $(command2)" "$(command3)"

ここでcommand1走っていcommand2ます。標準出力は一緒に接続されます(それらの間にスペースがあるため、スペースにスペースがあります)。結果はパラメータ1に配置されますcommond4。標準出力はcommand3パラメータ2として使用されますcommand4。それからcommand4実行されました。

そうであれば、引数は空白command4echo関連付けられて標準出力に送信されます。

PSデータからコマンドを実行するときは注意してください。脆弱になる可能性があります。データを提供する人は誰でも好きなコマンドを実行できます。

おすすめ記事