techie11
techie11

Reputation: 1387

running a pipe command with variable substitution on remote host

I'd to run a piped command with variable substitution on a remote host and redirect the output. Given that the login shell is csh, I have to used "bash -c". With help from users nlrc and jerdiggity, a command with no variable substitution can be formulated as:

localhost$ ssh -f -q remotehost 'bash -c "ls /var/tmp/ora_flist.sh|xargs -L1 cat >/var/tmp/1"'

but the single quote above will preclue using variable substitution, say, substituting ora_flist.sh for $filename. how can I accomplish that?

Thanks.

Upvotes: 0

Views: 346

Answers (2)

jil
jil

Reputation: 2691

So your problem was that you want the shell variable to be extended locally. Just leave it outside the single quotes, e.g.

ssh -f -q remotehost 'bash -c "ls '$filename' | xargs ..."'

Also very useful trick to avoid the quoting hell is to use heredoc, e.g.

ssh -f -q remotehost <<EOF
bash -c "ls $filename | xargs ... "
EOF

Upvotes: 0

jerdiggity
jerdiggity

Reputation: 3665

Something like this should work:

ssh -f -q remotehost 'bash -c "ls /var/tmp/ora_flist.sh|xargs -L1 cat >/var/tmp/1"'

Upvotes: 2

Related Questions