提问人:Rupesh Patil 提问时间:9/20/2021 最后编辑:Antonio PetriccaRupesh Patil 更新时间:11/3/2021 访问量:220
带有单引号和双引号的动态 shell 脚本 [duplicate]
Dynamic shell script with single and double quotes [duplicate]
问:
我正在尝试通过传递运行时参数来执行以下命令
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"'
答:
0赞
Antonio Petricca
9/20/2021
#1
单引号不会扩展变量,因此您必须将其插入
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\""
评论
0赞
Rupesh Patil
9/21/2021
lftp sftp://${user}:@${host} -e '设置 net:max-retries 2;设置 net:reconnect-interval-base 5;设置 net:reconnect-interval-multiplier 1;设置 sftp:connect-program “ssh -a -x -i '${cert}'”'
0赞
serghei
9/20/2021
#2
给你:
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
评论