0

I am trying to make the below command by passing runtime arguments

host=10.130.21.182
user=test-lftp
cert=/tools/abc/a200338-ivon.ppk

lftp sftp://$user:@$host -e 'set net:max-retries 2; set net:reconnect-interval-base 5; set net:reconnect-interval-multiplier 1; set sftp:connect-program "ssh -a -x -i $cert"'

But the final command is like below which is incorrect

lftp sftp://test-lftp:@10.130.21.182 -e 'set net:max-retries 2; set net:reconnect-interval-base 5; set net:reconnect-interval-multiplier 1; set sftp:connect-program "ssh -a -x -i $cert"'

Please help me to generate the expected below command

lftp sftp://test-lftp:@10.130.21.182 -e 'set net:max-retries 2; set net:reconnect-interval-base 5; set net:reconnect-interval-multiplier 1; set sftp:connect-program "ssh -a -x -i /tools/abc/a200338-ivon.ppk"'
Antonio Petricca
  • 8,891
  • 5
  • 36
  • 74
Rupesh Patil
  • 109
  • 2
  • 10
  • This worked for me : lftp sftp://${user}:@${host} -e 'set net:max-retries 2; set net:reconnect-interval-base 5; set net:reconnect-interval-multiplier 1; set sftp:connect-program "ssh -a -x -i '${cert}'"' – Rupesh Patil Sep 21 '21 at 11:19

2 Answers2

0

The single quotes don't expand variables so you have to chage it in

lftp sftp://test-lftp:@10.130.21.182 -e "set net:max-retries 2; set net:reconnect-interval-base 5; set net:reconnect-interval-multiplier 1; set sftp:connect-program \"ssh -a -x -i $cert\""
Antonio Petricca
  • 8,891
  • 5
  • 36
  • 74
  • lftp sftp://${user}:@${host} -e 'set net:max-retries 2; set net:reconnect-interval-base 5; set net:reconnect-interval-multiplier 1; set sftp:connect-program "ssh -a -x -i '${cert}'"' – Rupesh Patil Sep 21 '21 at 11:18
0

Here you go:

host=10.130.21.182
user=test-lftp
cert=/tools/abc/a200338-ivon.ppk

lftp sftp://$user:@$host -e 'set net:max-retries 2; set net:reconnect-interval-base 5; set net:reconnect-interval-multiplier 1; set sftp:connect-program '"ssh -a -x -i $cert"

Inside single quotes everything is preserved literally, without exception:

foo="bar"

echo 'baz "$foo"'
echo 'baz '"$foo"

Will print:

baz "$foo"
baz bar
serghei
  • 3,069
  • 2
  • 30
  • 48