次のコマンドを実行します。
ps -e -o args | grep destiny | grep UNIX
次の出力が表示されます。
/path/to/destiny -r -m UNIX -t TCP -p 1501
-m
印刷パラメータ(またはまたは-t
)-p
の値を取得するには、どのコマンドを使用できますか?私は次の目標を達成したいと思います。
ps -e -o args | grep destiny | grep UNIX | <someCommand> -p
これは印刷する必要があります1501
ps -e -o args | grep destiny | grep UNIX | <someCommand> -m
これは印刷する必要がありますUNIX
ps -e -o args | grep destiny | grep UNIX | <someCommand> -t
これは印刷する必要がありますTCP
、-p
またはは-m
列を切り替えて、-t
数字で列を印刷して選択できないようにすることができます。awk
事実が多いほど、解析が簡単になります。おそらくツールの知識が不足しているかもしれません。
- オプションがない場合は空の文字列が返されます。
- この特別な場合、解析されるオプションには常にパラメータ/値があります。
ベストアンサー1
これは、コマンド自体だけが引数を解析する方法を知っているため、通常は不可能です。あなたの例を見てください:
/path/to/destiny -r -m UNIX -t TCP -p 1501
-p
引数なしでオプションにすることができます(たとえば、ブール値:一部の動作を有効または無効にするなど)。この場合、1501
位置引数(ファイル名など)になります。あるいは、-p
引数が . の引数を持つオプションである場合もあります1501
。それが何であるかを知る方法はありません!
パラメータベクトルは0個以上の文字列のリストにすぎません。これらの文字列には、オプション、そのオプションの引数、オプションではない引数を表す意味はありません。
あなたの例のオプションでさえ-r
一般的に解析することはできません。-r
で始まる他の文字列が続くことを考慮すると、-
これはパラメータを使用しないオプション(たとえば、一部の動作を有効または無効にするブール値)である可能性が高くなりますが、-r
実際には100%はわかりません。-r
引数があるオプションであり、-m
その引数になります。あるいは、コマンドは一般的なUNIXルールにまったく従わない可能性があり、-r
単にオプションではありません!