Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Bash:"printf %q $str“在脚本中删除空格。(替代方案?)

Bash:"printf %q $str“在脚本中删除空格。(替代方案?)
EN

Stack Overflow用户
提问于 2012-01-28 03:45:58
回答 2查看 23.1K关注 0票数 18

printf %q应该引用一个字符串。但是,当执行到脚本中时,它会删除空格。

这个命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
printf %q "hello world"

产出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
hello\ world

这是正确的。

这个脚本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/bin/bash

str="hello world"
printf %q $str

产出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
helloworld

这是错误的。

如果这种行为确实是预期的,那么脚本中有什么替代方法来引用包含任何字符的字符串,以便被调用的程序将其转换回原始字符?

谢谢。

软件: GNU,版本4.1.5(1)-release (i 486-pc-linux-gnu)

编辑:解决了,谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-28 03:49:39

你应该使用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
printf %q "$str"

示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
susam@nifty:~$ cat a.sh
#!/bin/bash

str="hello world"
printf %q "$str"
susam@nifty:~$ ./a.sh 
hello\ world

运行printf %q $str时,shell将其展开为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
printf %q hello world

因此,字符串helloworld作为两个独立的参数提供给printf命令,并并排打印两个参数。

但是,当您运行printf %q "$str"时,shell将其扩展为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
printf %q "hello world"

在这种情况下,字符串hello world作为一个参数提供给printf命令。这就是你想要的。

下面是一些您可以尝试使用这些概念的东西:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
susam@nifty:~$ showargs() { echo "COUNT: $#"; printf "ARG: %s\n" "$@"; }
susam@nifty:~$ showargs hello world
COUNT: 2
ARG: hello
ARG: world
susam@nifty:~$ showargs "hello world"
COUNT: 1
ARG: hello world
susam@nifty:~$ showargs "hello world" "bye world"
COUNT: 2
ARG: hello world
ARG: bye world
susam@nifty:~$ str="hello world"
susam@nifty:~$ showargs $str
COUNT: 2
ARG: hello
ARG: world
susam@nifty:~$ showargs "$str"
COUNT: 1
ARG: hello world
票数 45
EN

Stack Overflow用户

发布于 2012-01-28 03:50:57

试一试

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
printf %q "${str}"

在你的剧本里。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9045001

复制
相关文章
.net通过boundary上传文件
public void UploadVedio(string fileName) { fileName = "input_video_only_3sec.mp4"; byte[] vedioBytes = null; using (FileStream fileStream = new FileStream(@"D:\缓存内容\test.mp4", FileMode.Open, FileAccess.Read))
SingYi
2022/07/13
5270
.net通过boundary上传文件
Selenium文件上传
日常的UI自动化测试过程中,经常会遇到文件上传的业务操作。对于通过input标签实现的上传功能, 我们可以直接利用Selenium提供的方法send_keys() 实现文件上传。这种文件上传实现方式是将本地文件的路径作为一个值放在input标签中,然后通过form表单将这个值提交给服务器。 本文将针对input标签示范自动化执行文件上传功能。
Altumn
2019/10/21
1.2K0
Selenium文件上传
Android通过URL文件下载及文件名提取
在写一个Android应用,需求也很简单就是通过接收JSON发送的数据进行解释获取URL的地址,然后根据这个地址把其文件下载。一下开始想用okhttp通过GET来下载问题,但问题是okhttp考虑得比较多也很完善(断线续传等);但这些我没必要也不需要这么复杂啊,那好吧简单点。就使用安卓自带的DownloadManager进行下载,不过用DownloadManager下载必须要满足API level 9以上,好在我的项目满足了,那就用呗,四行代码搞掂。
谭广健
2020/08/07
4.2K0
文件上传漏洞-通过ctf真题学习
前言:最近在学习一些ctf的东西,所以自己想从一个小白的身份,复现一些web的漏洞。学习一些大佬的思路!
亿人安全
2022/06/30
1.6K0
文件上传漏洞-通过ctf真题学习
通过 Smb 上传文件到电脑(无需密码)
win10基本都关闭了SMB1,但是win7是可以使用的,可以设置打开SMB1。也可以使用 SMB2/SMB3 。
Jingbin
2020/06/11
2.1K0
通过 Smb 上传文件到电脑(无需密码)
通过URL载入ShellCode代码
将生成的shellcode放到web服务器上,本地不保存恶意代码,本地只负责加载到内存运行,这样可以很好的躲过查杀。
微软技术分享
2022/12/28
6810
通过URL载入ShellCode代码
通过Url抓取网页内容
本文由来源 21aspnet,由 javajgs_com 整理编辑,其版权均为 21aspnet 所有,文章内容系作者个人观点,不代表 Java架构师必看 对观点赞同或支持。如需转载,请注明文章来源。
Java架构师必看
2021/03/22
1.7K0
通过 PHP把文件上传到服务器
注释: 允许用户上传文件是一个巨大的安全风险。请仅仅允许可信的用户执行文件上传操作。
用户9042463
2021/09/29
3.9K0
【逻辑漏洞】通过条件竞争进行文件上传
基本概念:竞争条件发生在多个线程同时访问同一个共享代码、变量、文件等没有进行锁操作或者同步操作的场景中。
一名白帽的成长史
2020/06/24
5.5K0
【逻辑漏洞】通过条件竞争进行文件上传
asp.net中通过input file上传文件
<input id=”htmlFile” type=”file” runat=”server” />
全栈程序员站长
2022/09/09
2.1K0
element-ui上传组件,通过自定义请求上传文件
首先关闭自动上传,并给随便给action赋值一个字符串。(action是必填属性)
codeniu
2022/02/25
4.4K0
Selenium之文件上传、下载
文件上传功能的话,一般都是需要点击上传按钮,然后打开本地windwos窗口,从窗口中选择文件,然后进行上传,但是windwos的弹窗不属于浏览器页面的元素,通过WebDriver无法操作windwos控件,那么遇到这种情况的话,文件上传操作该如何去模拟呢?下面让小编带你来了解一下吧。
小博测试成长之路
2021/03/08
1.7K0
Selenium之文件上传、下载
通过 ReferenceOutputAssembly=False 在引用项目时,不额外引入依赖文件
正常当两个 .NET 项目有引用的时候,会将一个的输出拷贝到另一个的输出目录下。但有时我们只是希望通过引用建立一个依赖关系而已,最终两个项目的输出是独立的。
walterlv
2023/10/22
2840
通过 ReferenceOutputAssembly=False 在引用项目时,不额外引入依赖文件
Electron通过协议url唤起应用
前言 对于一个 URL 来说,其实就是指定了一个协议(protocol),然后让系统用对应的应用去打开它。如 myapp://openapp?name=1&pwd=2,系统会去找到已经注册了 myap
码客说
2021/01/29
3.9K1
coreml之通过URL加载模型
在xcode中使用mlmodel模型,之前说的最简单的方法是将模型拖进工程中即可,xcode会自动生成有关模型的前向预测接口,这种方式非常简单,但是更新模型就很不方便。
一棹烟波
2019/07/02
1.5K0
通过PicturreId获取图片路径(Url)
1.直接使用接口服务 _pictureService.GetPictureUrl((int)entity.SponsorPictureId); //entity是具体查询出来的实体对象 SponsorPictureId是entity实体中的图片Id 2.GetPictureUrl方法存在IPicture接口的实现类中  (2.1) IPicture 接口的定义 string GetPictureUrl(int pictureId, int targetSize = 0,
wfaceboss
2019/04/08
1.8K0
pdfGPT——通过AI与上传的PDF文件进行聊天
在AI浪潮风起云涌的当下,AI正在不断地重塑着每一个行业。笔者的目标是在公众号中把所有当下流行的AI应用都梳理一遍,在整理技术拓展思路的同时也给大家做一个科普。有一段时间没有介绍aigc相关的应用了,今天翻到了一个很早之前调研过的火了很久的一个项目—pdfGPT。
山行AI
2023/06/14
3K0
pdfGPT——通过AI与上传的PDF文件进行聊天
通过selenium抓取新浪微博
由于新浪微博的手机网页的访问加入了验证码,所以抓取新浪微博的后门行不通了,经过一系列的研究,最终使用selenium工具模仿浏览器行为访问新浪微博公众号,因为浏览器访问网页时是以访客的形式访问 ,所以避免了用户登录这一过程,可以顺利的进行指定微博的内容抓取,selenium的缺点是无法确定页面加载完毕的时间也js执行完毕的时间,所以在抓取效率方面会有所牺牲。
code2roc
2023/07/19
2480
EasyDSS平台如何通过接口在特定的视频分类里上传点播文件?
EasyDSS视频直播点播平台支持Flash、H5播放,可提供一站式的视频推拉流、转码、点播、直播、时移回放、存储等服务,支持播放H.265编码视频,可兼容多操作系统。搭配RTMP高清摄像头使用,可将设备的实时流推送到平台上,实现无人机视频推流直播,可应用在城市航拍、农业植保、森林防火、秸秆焚烧、电力巡检等场景中。
TSINGSEE青犀视频
2022/06/15
9030
点击加载更多

相似问题

船舶/潜艇运动模型的简单物理

40

简单(快速)掷出物理学

10

如何处理固定端和滑动重量的绳物理?

10

网络物理-内插导致物理引擎爆炸

10

简单游戏中的碰撞检测/物理

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文