博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[linux shell]参数传递之空格
阅读量:2435 次
发布时间:2019-05-10

本文共 760 字,大约阅读时间需要 2 分钟。

转载地址:

今天下午做实验数据的自动化时遇到一个很有趣的小问题,与大家分享下:

【背景】

S是一个bash脚本,P是一个python脚本,S在脚本中调用了P,并传递参数给P

【问题】

现在问题来了,在调用S的时候,有一个参数会传递给P。当传递S的参数是空格时,我们假设空格所在的位置是shell的$1,那么怎么把这个空格作为参数传递给P呢?

【方法】

1. python p $1

执行时自动略去最后的空格,失败

2. python p \"$1\"

这样执行时转义保证是python p " ",但是在shell中传参时其实是用空格分割的,所以传到p中的参数实际变成了[p, " , "]三个,不是空格,失败

3. python p \\$1

我想的是转义后变成python p \空格,传给p再次转移后就能还原成空格。其实不是,因为分割后认为传递的参数只有[p, \\]。看来走转义的路是行不通的。

4. 

temp = $2

python p ${temp:-空格}

和1实际上是同样的,失败

【分析】

shell从外部执行时,对于" "参数可以认为是空格,但是从内部解释时“ ”就被当成了两个参数

【解决方案】

子shell:

echo "python p \"$1" >> ~f.tmp

sh ./~f.tmp

将要执行的命令打到临时文件,然后作为子shell启动。

这个方法比较笨。各位如果有哪些比较好的方法,请不吝赐教:D

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28371090/viewspace-766140/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/28371090/viewspace-766140/

你可能感兴趣的文章
SSH加密密码中的非对称式密码学
查看>>
Mac Redis安装入门教程
查看>>
python3安装教程配置配置阿里云
查看>>
Mac快捷键和实用技巧
查看>>
Git的多人协作和分支处理测试
查看>>
mysql索引回表
查看>>
iterm2 保存阿里云登陆并防止断开连接
查看>>
brew安装
查看>>
mysql5.7初始密码查看及密码重置
查看>>
go语言实现2048小游戏(完整代码)
查看>>
动态二维码免费制作
查看>>
C语言贪吃蛇
查看>>
Python练手项目
查看>>
知网毕业论文爬取
查看>>
Django无法显示图片
查看>>
AOP技术基础
查看>>
聊聊Spring中的数据绑定 --- DataBinder本尊(源码分析)
查看>>
Spring MVC 框架的请求处理流程及体系结构
查看>>
mybatis-generator-gui界面工具生成实体
查看>>
Github访问速度很慢的原因,以及解决方法
查看>>