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

时间:2017-05-12 08:22:43

标签: 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似乎破坏了输出。

1 个答案:

答案 0 :(得分:0)

我不确定切割的目的,但$()周围缺少引号,所以输出被分成带有IFS的单词

echo "$(eval "$last")"

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

如果将cut -d"|" -f1用作文字,例如|,则

echo '|'也会失败。

也许你可以在bash手册中查看Even designators:在交互式bash中将运行最后一个命令

$ !-1