私はしばしば次の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