出力リダイレクトコマンドラインを単純化する方法は?

出力リダイレクトコマンドラインを単純化する方法は?

私はしばしば次のLinux環境で出力リダイレクトコマンドを使用します。

echo mymodule set number 10 >/proc/aaaa/bbbb_cmd

echo .... >....このコマンドを省略し、次のように使用したいと思います。

mymodule set number 10

誰かが私にbashがこれを行うことができると言いましたが、どうすればいいのかわかりません。誰かが私に例を与えることができますか?

ベストアンサー1

シェル機能があなたに最適なようです。

mymodule () {
    local IFS=' '
    printf 'mymodule %s\n' "$*" >/proc/aaaa/bbbb_cmd
}

これはシェル関数を定義しますmymodule。対応する文字列をmymodule記録し、スペースで区切ってコマンドラインで指定した他の文字列を記録します/proc/aaaa/bbbb_cmd

"$*"コマンドライン引数のリストに展開され、最初の文字を区切り文字$IFSで連結します(デフォルトでは空白ですが、関数が変更された$IFSコンテキストで機能し続けるように、ここでは明示的に空白に設定します)。単一の文字列。

シェル関数定義は通常、エイリアスを配置する場所、ファイル、または~/.bashrcそれに対応する場所に配置できます。この機能は、開始する次のシェルセッションで使用できます。

質問に示すように、このシェル関数を使用してください。

mymodule set number 10

おすすめ記事