小编Rus*_*ils的帖子

编写同时接受来自管道和参数的输入的 Shell 函数

我正在尝试编写一个我logAction专门调用的函数,该函数Ksh从管道读取输入并在同一个函数调用中接受参数。我一直在尝试调试这个 2 周,在谷歌和这样的网站上搜索。

我尝试创建的函数的目的是简化将输出记录到我开发的其他脚本的日志文件的过程。我打算在各种情况下使用该命令,但最容易描述和说明我正在尝试的两种情况类似于以下内容:

语法示例 1:

logAction 1 "Script executed some action."
Run Code Online (Sandbox Code Playgroud)

语法示例 2:

COMMAND1 | COMMAND2 | logAction 1
Run Code Online (Sandbox Code Playgroud)

如您所见,我希望能够将预期的日志信息作为参数或作为 stdinput 通过管道传递给函数,以便捕获命令序列的输出。第三种情况是在管道输出之前添加一些文本,即

语法示例 3:

COMMAND1 | COMMAND2 | logAction 1 "This is the output:  "
Run Code Online (Sandbox Code Playgroud)

下面的输出说明了使用示例 3 中的语法的结果:

[2015/12/28 10:20:32] This is the output:  <Output from COMMAND1 | COMMAND 2>
Run Code Online (Sandbox Code Playgroud)

这是我尝试创建的函数的基本框架。

function logAction {
  while read -t 0 -u 0 stdinput
  do
    echo "StdInput:'$stdinput'"
    pipedinput=$stdinput
  done
  pipedinput=${pipedinput:-}

  case $1 in
    1)  #Output text only to …
Run Code Online (Sandbox Code Playgroud)

linux stdin ksh function pipe

1
推荐指数
1
解决办法
2650
查看次数

标签 统计

function ×1

ksh ×1

linux ×1

pipe ×1

stdin ×1