在bash脚本中执行Linux命令并将输出写入控制台并保留断行

时间:2015-01-19 11:24:25

标签: bash

我想要一个执行给定命令的bash函数,将其输出打印到控制台,并在脚本执行完成时通知我。该函数看起来像这样:

n() {
  echo $($a)
  notify-send "Exexution of '$@' has finished."
}

当我运行n ls时,我希望输出ls的输出与从控制台执行的输出相同。但相反,它将ls的输出放在一行上。

$ n ls -la 
drwxr-xr-x 30 orangetux orangetux 4096 Jan 18 12:41 bundle drwxr-xr-x 2 orangetux orangetux 4096 Jan 9 22:23 colors

而不是:

$ ls
drwxr-xr-x 30 orangetux orangetux 4096 Jan 18 12:41 bundle
drwxr-xr-x  2 orangetux orangetux 4096 Jan  9 22:23 colors

如何打印n ls的输出ls

修改

删除了有关突出显示的说明。

1 个答案:

答案 0 :(得分:2)

你可以使用:

n() { "$@"; echo "Execution of '$@' has finished."; }

即。不要使用echo $(...)因为空格被shell剥离而没有引号。

你也可以这样做:

echo "$($@)"