双空格自动替换为单个空格

Ron*_*oni 3 csh

我在文件中包含以下命令的文件.

#!/bin/csh -f
echo "test  test"  //echo test [dobule space] test
set a = "test  test"  //set a = test [dobule space] test
echo $a
Run Code Online (Sandbox Code Playgroud)

输出如下.

测试[dobule space]测试

测试[单一空间]测试

当我将值设置为a时,双空格如何被单个空格替换?

任何帮助表示赞赏.

anu*_*ava 6

当我将值设置为a时,双空格如何被单个空格替换?

不,它不会被单一空间取代.这是因为你没有使用引号echo.使用:

echo "$a"
Run Code Online (Sandbox Code Playgroud)

获得双倍间距的字符串.

如果不引用变量,Shell默认会将多个空格修剪为单个空格.即使这将是单一空间:

s='a     b'
echo $s
a b
Run Code Online (Sandbox Code Playgroud)

但引用:

echo "$s"
a     b
Run Code Online (Sandbox Code Playgroud)

编辑:基于以下评论,您可以在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" 
Run Code Online (Sandbox Code Playgroud)