Lan*_*rts 0 scripting unix ssh command-line-interface redirection
我在 csh 脚本中有以下相关行:
#!/bin/csh -xv
set dvar = `date +"^%m\/%d\/%y"`
set filedate = `date +%b%d%Y`
set grepstring = "grep "\"$dvar\"" </home/user/log/logfile"
set outstring = ">> serverlog_$filedate.txt"
grep "$dvar" <logfile >serverlog_$filedate.txt
ssh SERVER1 \"\"$grepstring\"\" $outstring
Run Code Online (Sandbox Code Playgroud)
本地日志文件上的第一个 grep 效果很好,但 SSH grep 将其输出写入远程目录。
该行是从批处理文件中出来的:
ssh SERVER1 ""grep "^01\/05\/10" <home/user/log/logfile"" >> serverlog_Jan052010.txt
Run Code Online (Sandbox Code Playgroud)
当我输入它时(当然少了一组引号)它工作正常,我只是无法从 csh 脚本中得到它。
你如何让这个命令输出到本地机器上的指定文件?
编辑: 这是由于 womble 起作用的最终结果:
#!/bin/csh
set dvar = `date +"%m\/%d\/%y"`
set filedate = `date +%b%d%Y`
grep "^$dvar" logfile > serverlog_$filedate.txt
ssh SERVER1 grep "^$dvar" /home/user/log/logfile >> serverlog_$filedate.txt
Run Code Online (Sandbox Code Playgroud)
那个剧本让我流血。摆脱所有存储命令片段的变量(以及 上不必要的输入重定向grep),看看这会让你在哪里。引用几乎肯定会以您甚至不想想象的方式搞砸。在 bourne shell 中,我会这样写:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3164 次 |
| 最近记录: |