次のテキストファイルがあります。
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
実行されました。
そうであれば、引数は空白command4
にecho
関連付けられて標準出力に送信されます。
PSデータからコマンドを実行するときは注意してください。脆弱になる可能性があります。データを提供する人は誰でも好きなコマンドを実行できます。