誰でもこの問題を解決できますか?awkの出力を変数に保存する
awkの出力を変数に保存しようとしています。
variable = `ps -ef | grep "port 10 -" | grep -v "grep port 10 -"| awk '{printf "%s", $12}'`
printf "$variable"
EDIT:$ 12は、そのプロセスで実行されているパラメータに対応します。
ありがとうございます!
誰でもこの問題を解決できますか?awkの出力を変数に保存する
awkの出力を変数に保存しようとしています。
variable = `ps -ef | grep "port 10 -" | grep -v "grep port 10 -"| awk '{printf "%s", $12}'`
printf "$variable"
EDIT:$ 12は、そのプロセスで実行されているパラメータに対応します。
ありがとうございます!
#!/bin/bash
variable=`ps -ef | grep "port 10 -" | grep -v "grep port 10 -" | awk '{printf $12}'`
echo $variable
等号の後にスペースがないことに注意してください。
$()
を使用すると、入れ子にして読み取りが可能になります。
RUI&NiKiZeに感謝、それは等号の前後の間隔でした。 – Jeremy
私は$()構文は...
variable=$(ps -ef | grep "port 10 -" | grep -v "grep port 10 -"| awk '{printf "%s", $12}')
読みやすいですが、質問が変更されましたので、本当の問題は、おそらくその$12
が
編集「」とqoutedすべきではないと思います、これは有効なデータを返しますが、期待される出力がps -ef
であり、何が期待どおりかは不明です。
最後のパイプの後で ''{printf'の前に' awk'があるはずです。回答が編集されたときに誤って削除された可能性があります。 – aDroid
前述のように、bash変数を設定しても、LHSの変数名とRHSの変数値の間に '='記号の間の空白はできません。
awkはすべてを行い、 "awk"の特別な "grep"を避けることができます。 awkのprintfの使用は、perl-ish matcherプログラムのconniptionsを与える文字列に不要な "\ n"を追加しないことです。 bashであなたのケースのための変数/パラメータ展開はその問題を持っていないので、これらの作業のいずれか:
variable=$(ps -ef | awk '/port 10 \-/ {print $12}')
variable=`ps -ef | awk '/port 10 \-/ {print $12}'`
「 - 」awkのレコードマッチングパターンは、検索からのawk自体を削除する必要がなくなりint型結果。
variable=$(ps -ef | awk '/[p]ort 10/ {print $12}')
[p]
あなたはps -ef | grep "port 10"
の出力を掲示し、あなたがラインから必要なものならば、それはより簡単だろう@Jeremy ps
から示すから検索を除去するための巧妙なトリックです
このシェルスクリプトを実行したときの出力は? – wens
問題は本当に明確ではありません。あなたが得たエラーは何ですか? 'ps -ef'の行は何ですか?$ variableには何がありますか? (実際のデータを提供できない場合は、代わりに問題を示す消毒済みの例を生成してください) – NiKiZe
問題:変数がprintf文に表示されません。 最終目標:$ 12は、そのプロセスで実行されているシリアル番号に対応します。私はそれを使用することができますので、変数にそのパラメータを保存したいです。 – Jeremy