我正在尝试从用户输入创建一个管道,但是当我重定向输出时,我得到一个没有换行的输出,它只是一条巨大的单行。这是代码:
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似乎破坏了输出。
答案 0 :(得分:0)
我不确定切割的目的,但$()
周围缺少引号,所以输出被分成带有IFS的单词
echo "$(eval "$last")"
对于具有不同于3的位数的历史记录条目,cut -c8-
可能比cut -d" " -f5-
更安全。
cut -d"|" -f1
用作文字,例如|
,则 echo '|'
也会失败。
也许你可以在bash手册中查看Even designators
:在交互式bash中将运行最后一个命令
$ !-1