linux - 带单引号和双引号的动态 shell 脚本
问题描述
我正在尝试通过传递运行时参数来制作以下命令
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\""
推荐阅读
- sql - SQL Server 代理 - 作业错误 - 'DataSourceType'
- scala - 如何在使用 Scala 的 Spark Dataframe 查询中使用自定义函数
- python - 如何在 Flask-Cache 中替换(而不是完全重新计算)记忆结果
- c++ - 转换 std::vector
使用 std::views 在 C++20 中只是一个 std::string - python - 有没有办法在 Python 中获取 ASCII 字符?
- git - 如何使用 github api 列出目录下的所有文件名?
- typescript - 在 Gremlin + Neptune 中,Inject() 要作为顶点插入的字符串列表需要很长时间
- sql - 如何从 SQL 表中获取行,而忽略在某一特定列中具有重复值的行
- ethereum - Goerli 测试网挂起交易耗时太长?
- node.js - One-drive-api : body 必须是字符串