Monday 15 April 2013

linux - Bash returning a no such file when file exists -



linux - Bash returning a no such file when file exists -

i'm trying run grep command on log file grab url utilize functions. problem keeps giving me no such file or directory error whenever seek run it. thought bizarre prefixed ls command see if did exist , lo , behold indeed there. can tell me issue is, have feeling it's syntax issue i'm not aware of can't figure out.

#!/bin/bash in `seq 1 3` ; ssh user@member${i}.domain.com << eof cd /home/path/member${i}/logs ls #i've printed output of below test=$( grep -op "http:.*microwebapp/$" "messages.log" ) echo "test variable = ${test}" exit eof done

the output of ls command below:

console.log messages.log status.log trace.log

so i'm confused what's going on, i've tried replacing "messages.log" "./messages.log" no avail.

edit: here's total output 1 iteration of loop:

grep: ./messages.log: no such file or directory pseudo-terminal not allocated because stdin not terminal. console.log messages.log status.log trace.log test variable =

i suppose it's little odd grep command throws error before ls command runs don't have explanation either

because of "plain" heredoc, these lines execute on local machine, before shell hands command ssh

test=$( grep -op "http:.*microwebapp/$" "messages.log" ) echo "test variable = ${test}"

try:

ssh user@member${i}.domain.com << eof cd /home/path/member${i}/logs ls #i've printed output of below test=\$( grep -op "http:.*microwebapp/$" "messages.log" ) #....^ echo "test variable = \$test" #.....................^ exit eof

by "plain" heredoc, mean terminating word unquoted. 1 can set single quotes around word, , single quotes whole heredoc:

ssh remote_host <<'end' #.................^...^ h=$(hostname) d=$(date) echo time @ $h $d end

you can't in code because rely on expanding local var $i alter right directory.

linux bash

No comments:

Post a Comment