bash检查字符串是否包含空格

时间:2016-01-06 23:06:20

标签: string bash

在我的bash脚本中,我想检查字符串是否包含空格,如果它确实用%20替换字符串中的空格以将字符串解析为网站。

我对bash很新,应该是最好的方式?

我知道如何在c#中使用它,但bash与我看到的有点不同。

3 个答案:

答案 0 :(得分:3)

请参阅bash手册中的“Shell参数扩展”。

对于您的情况,假设一个名为x的变量

$ x="one two three"

$ echo $x
one two three

$ echo ${x// /%20}
one%20two%20three

(*编辑:链接到gnu.org bash手册)

答案 1 :(得分:2)

在Debian和Ubuntu上,可以安装gridsite-clients包:

sudo apt-get install gridsite-clients

此程序包附带一个名为urlencode的命令,该命令使用百分比编码对字符串进行编码。这有点超出你的要求,因为例如百分比本身也被编码(到%25)。

例如:

$ urlencode "foo bar"
foo%20bar
$ urlencode "foo%bar"
foo%25bar
$ urlencode "foo-bar/baz"
foo-bar%2Fbaz

答案 2 :(得分:2)

使用sed [在shell脚本中]很容易做到:

#!/bin/bash -

str="abc def ghi"
echo "$str"

hstr=`echo "$str" | sed -e 's/ /%20/g'`
echo "$hstr"