我试图通过传递运行时参数
来执行以下命令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"'
但是最后的命令像下面这样是不正确的
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"'
请帮我生成下面预期的命令
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"'
单引号不能展开变量,所以你必须在
中修改它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""
给你:
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"
单引号内的所有内容都按字面意思保留,没有例外:
foo="bar"
echo 'baz "$foo"'
echo 'baz '"$foo"
将打印:
baz "$foo"
baz bar