linux - 将输出从一个函数重定向到另一个函数

标签 linux bash

我正在尝试根据用户输入创建一个管道,但是当我重定向输出时,我得到的输出没有换行符,它只是一个巨大的单行。以下是代码:

 42 function stack(){
 43  echo $(history|tail -1|cut -d" " -f5-|cut -d "|" -f1) >> ~/commands
 44  local last=$(tail -1 ~/commands)
 45  echo  $(eval $last) >> ~/output
 46 }

是否有更好的方法将输出通过管道传输到文件? Echo 似乎破坏了输出。

最佳答案

我不确定是否理解剪切的目的,但 $() 周围缺少引号,因此输出被 IFS 拆分为单词

echo "$(eval "$last")"

对于位数不等于 3 的历史条目,cut -c8- 可能比 cut -d""-f5- 更安全。

还有cut -d"|"如果将 | 用作文字,例如 echo '|',-f1 可能会失败。

也许你可以看看 bash 手册中的偶数指示符:在交互式 bash 中,以下命令将运行最后一个命令

$ !-1

关于linux - 将输出从一个函数重定向到另一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43932857/

相关文章:

linux - 如何在 Linux 中使用脚本停止和启动 screen 作业

linux - 在 Windows 上运行虚拟机

c - 如果我们不关闭管道 : Linux/C 中使用过的一端会发生什么

r - 使用runuser时如何导出变量

linux - apache Vhost开启其他Vhost

java - 为参数化变量创建 shell 脚本

linux - 模式解码

bash - gnuplot 直方图 : line 0: Too many columns in using specification

Bash 随机化变量

bash - 文件的 md5sum 验证