首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >双空间自动替换为单个

双空间自动替换为单个
EN

Stack Overflow用户
提问于 2015-01-16 11:24:58
回答 2查看 205关注 0票数 3

我在文件中有以下命令的文件。

代码语言:javascript
复制
#!/bin/csh -f
echo "test  test"  //echo test [dobule space] test
set a = "test  test"  //set a = test [dobule space] test
echo $a

输出如下。

多巴空间试验

试验单空间试验

设置值时,如何将双空间替换为单个空格?

任何帮助都是非常感谢的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-16 11:27:39

设置值时,如何将双空间替换为单个空格?

不,它不会被单个空间所取代。这是因为您没有在echo中使用引号。使用:

代码语言:javascript
复制
echo "$a"

得到双倍行距的字符串。

默认情况下,如果不引用变量,Shell会将多个空白限制到单个空格中。即使这将是一个单独的空间:

代码语言:javascript
复制
s='a     b'
echo $s
a b

但引用如下:

代码语言:javascript
复制
echo "$s"
a     b

编辑:基于下面的注释,您可以在csh中这样做:

代码语言:javascript
复制
set QUERY = "select p.path from path p, file f where p.pathid=f.pathid and f.fileid=1234"
set dir = "`/usr/etc/venture/bin/mysql -BN -uroot -***** ****-e '$QUERY'`"
echo "$dir" 
票数 6
EN

Stack Overflow用户

发布于 2015-01-16 11:53:47

bash中,除非引用值,否则命令行上的任何空格字符都会默认替换为单个空格。

man page告诉了这一点,但以一种非常迂回的方式:

“引证”一节:

单引号中包含的字符保留引号中每个字符的文字值。 双引号括起来的字符保留引号中所有字符的文字值,但$除外,`,\,以及,当启用历史扩展时,!

...Which意味着空格字符!因为,事实证明,它们是“特殊的”:

“分词”一节:

如果IFS未设置,或其值完全是<space><tab><newline>,则默认的,则忽略前面展开结果开头和结尾的<space><tab><newline>序列,并且不位于开头或结尾的任何IFS字符序列都将用于分隔单词。

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

https://stackoverflow.com/questions/27982933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档