比较来自世界各地的卖家的域名和 IT 服务价格

SSH 没有重定向 stdout 在本地终端

我在脚本中有以下相关行 csh:

#!/bin/csh -xv
set dvar = `date +"^%m\/%d\/%y"`
set filedate = `date +%b%d%Y`
set grepstring = "grep "\"$dvar\"" > serverlog_$filedate.txt"
grep "$dvar" <logfile>serverlog_$filedate.txt
ssh SERVER1 \"\"$grepstring\"\" $outstring

首先 grep 在本地日志文件中工作正常,但 grep SSH 将输出记录到远程目录。

字符串出于以下命令文件:

ssh SERVER1 ""grep "^01\/05\/10" <home log="" logfile""="" user="">&gt; serverlog_Jan052010.txt

当我输入它时 (当然,一组引号少), 它可以正常工作,我只是无法从脚本上工作 csh.

如何在本地计算机上的指定文件中显示此命令?

编辑:

这是致力于谢谢的最终结果 womble:

#!/bin/csh
set dvar = `date +"%m\/%d\/%y"`
set filedate = `date +%b%d%Y`

grep "^$dvar" logfile &gt; serverlog_$filedate.txt
ssh SERVER1 grep "^$dvar" /home/user/log/logfile &gt;&gt; serverlog_$filedate.txt

</home></logfile>
已邀请:

二哥

赞同来自:

从这种情况来看,我有一个流血的眼睛。 摆脱存储命令片段的所有变量 (和不必要的输入重定向

grep

) 看看它将导致的东西。 引文几乎肯定是错误的,你甚至没有猜到。 在壳中 Bourne 我会写这样的东西:

today="$(date +"%m\/%d\/%y")"
filetoday="$(date +%b%d%Y)"

grep "^$today" logfile > serverlog_${filetoday}.txt
ssh SERVER1 grep "^$today" /home/user/log/logfile >> serverlog_${filetoday}.txt

知食

赞同来自:

如果这通常是:

不使用 csh

该怎么办

Womble

提供

不要使用变量进行重定向,因为它不起作用

如果您需要更改重定向,至少在 Bash 和 sh, 你可以:

file="/some/file"
if [ somecondition ]
then
exec 3>&1 # send output of file descriptor 3 to stdout
elif [ condition2 ]
exec 3>>"$file" # append it to the file
else
exec 3>"$file" # overwrite the file
fi
echo "text" >&3 # output to chosen location

要回复问题请先登录注册