2010年12月30日星期四

Bash的输出重定向

直接在Bash中执行
ssh -v -N -f -D 7070 user@1.2.3.4 &>out.ssh
那么stdout和stderr都被定向到了out.ssh文件中。
但是如果分像下面这样分两步(在脚本中会这么用):
SSH_COMMAND="ssh -v -N -f -D 7070 user@1.2.3.4 &>out.ssh"
$SSH_COMMAND
那么就看不到out.ssh,似乎&>out.ssh被理解为在1.2.3.4的主机上重定向。
必须这么改:

SSH_COMMAND="ssh -v -N -f -D 7070 user@1.2.3.4"
$SSH_COMMAND &>out.ssh
才能得到和交互执行一样的结果,即定向到本地文件。是什么原理呢?

Update:2/28/2011 用eval "$SSH_COMMAND"是可以的。或者放到一个函数里面再执行。

没有评论:

发表评论