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