我在Linux环境中经常使用输出重定向命令,例如:
echo mymodule set number 10 >/proc/aaaa/bbbb_cmd
我想省略echo .... >....
并使用这个命令,例如
mymodule set number 10
有人告诉我 bash 可以做到这一点,但我不知道该怎么做?有人能给我举个例子吗?
答案1
似乎 shell 函数最适合您:
mymodule () {
local IFS=' '
printf 'mymodule %s\n' "$*" >/proc/aaaa/bbbb_cmd
}
这定义了 shell 函数mymodule
。它将写入该字符串mymodule
,后跟您在命令行上提供的任何其他字符串,以空格分隔/proc/aaaa/bbbb_cmd
。
将"$*"
扩展为命令行参数列表,与作为$IFS
分隔符的第一个字符(默认情况下为空格,但我们在此处明确将其设置为空格,以便函数仍然可以在$IFS
已修改的上下文中工作)连接成单字符串。
shell 函数定义可以放置在您通常放置别名的任何位置,或者放置在您的~/.bashrc
文件或等效文件中。该函数将在您启动的下一个 shell 会话中可用。
您将像问题中所示那样使用此 shell 函数:
mymodule set number 10