我在文件中有以下命令的文件。
#!/bin/csh -f
echo "test test" //echo test [dobule space] test
set a = "test test" //set a = test [dobule space] test
echo $a输出如下。
多巴空间试验
试验单空间试验
设置值时,如何将双空间替换为单个空格?
任何帮助都是非常感谢的。
发布于 2015-01-16 11:27:39
设置值时,如何将双空间替换为单个空格?
不,它不会被单个空间所取代。这是因为您没有在echo中使用引号。使用:
echo "$a"得到双倍行距的字符串。
默认情况下,如果不引用变量,Shell会将多个空白限制到单个空格中。即使这将是一个单独的空间:
s='a b'
echo $s
a b但引用如下:
echo "$s"
a b编辑:基于下面的注释,您可以在csh中这样做:
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" 发布于 2015-01-16 11:53:47
在bash中,除非引用值,否则命令行上的任何空格字符都会默认替换为单个空格。
man page告诉了这一点,但以一种非常迂回的方式:
“引证”一节:
单引号中包含的字符保留引号中每个字符的文字值。 双引号括起来的字符保留引号中所有字符的文字值,但$除外,`,\,以及,当启用历史扩展时,!
...Which意味着空格字符!因为,事实证明,它们是“特殊的”:
“分词”一节:
如果IFS未设置,或其值完全是
<space><tab><newline>,则默认的,则忽略前面展开结果开头和结尾的<space>、<tab>和<newline>序列,并且不位于开头或结尾的任何IFS字符序列都将用于分隔单词。
https://stackoverflow.com/questions/27982933
复制相似问题