Linux 将输出从一个函数重定向到另一个函数
我试图从用户输入创建一个管道,但是当我重定向输出时,我得到的输出没有换行符,只是一个巨大的单行。下面是代码:Linux 将输出从一个函数重定向到另一个函数,linux,bash,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 } 是否有更好的
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-
更安全
另外,如果将|
用作文本,例如echo'|'
,则cut-d“|”-f1
可能会失败
也许您可以在bash手册中查看甚至是指示符
:在交互式bash中,下面将运行最后一个命令
$ !-1
为什么
echo$(eval$last)
?为什么不干脆eval$last
?它只能在交互式bash中工作,不能在函数中使用,因为扩展发生在函数定义中