Bash 如何在带有cURL的URL中同时包含分号和变量?

Bash 如何在带有cURL的URL中同时包含分号和变量?,bash,shell,Bash,Shell,我的问题是如何运行此bash代码: #!/bin/sh actionString = printpage curl 'www.example.com/index.php?action=$actionString;post=5' 我的问题是,如果我没有用引号转义URL,那么它将在“;”之后停止处理URL,但是如果我用引号转义URL,它将无法识别变量。有什么诀窍可以克服这一点吗?谢谢你的帮助 使用不禁止参数替换的引号 curl "http://www.example.com/index.php?a

我的问题是如何运行此bash代码:

#!/bin/sh
actionString = printpage
curl 'www.example.com/index.php?action=$actionString;post=5'

我的问题是,如果我没有用引号转义URL,那么它将在“;”之后停止处理URL,但是如果我用引号转义URL,它将无法识别变量。有什么诀窍可以克服这一点吗?谢谢你的帮助

使用不禁止参数替换的引号

curl "http://www.example.com/index.php?action=$actionString;post=5"

使用不禁止参数替换的引号

curl "http://www.example.com/index.php?action=$actionString;post=5"

变量不在单引号内计算:

greeting=hello
echo 'say $greeting; ...'  # outputs literally: say $greeting; ...
echo "say $greeting"  # outputs: say hello; ...
变量在双引号内计算:

greeting=hello
echo 'say $greeting; ...'  # outputs literally: say $greeting; ...
echo "say $greeting"  # outputs: say hello; ...
只能引用需要引用的部分参数,并且可以对某些部分使用双引号,对其他部分使用单引号。所有这些都是等效的:

echo say $greeting"; ..."
echo say $greeting'; ...'
echo "say $greeting"'; ...'
echo say $greeting\; ...
因此,在您的情况下,这些都会起作用:

curl "http://www.example.com/index.php?action=$actionString;post=5"
curl http://www.example.com/index.php?action="$actionString;post=5"
curl http://www.example.com/index.php?action="$actionString;"post=5
如果
actionString
没有特殊字符,这也可以:

curl http://www.example.com/index.php?action=$actionString';post=5'

变量不在单引号内计算:

greeting=hello
echo 'say $greeting; ...'  # outputs literally: say $greeting; ...
echo "say $greeting"  # outputs: say hello; ...
变量在双引号内计算:

greeting=hello
echo 'say $greeting; ...'  # outputs literally: say $greeting; ...
echo "say $greeting"  # outputs: say hello; ...
只能引用需要引用的部分参数,并且可以对某些部分使用双引号,对其他部分使用单引号。所有这些都是等效的:

echo say $greeting"; ..."
echo say $greeting'; ...'
echo "say $greeting"'; ...'
echo say $greeting\; ...
因此,在您的情况下,这些都会起作用:

curl "http://www.example.com/index.php?action=$actionString;post=5"
curl http://www.example.com/index.php?action="$actionString;post=5"
curl http://www.example.com/index.php?action="$actionString;"post=5
如果
actionString
没有特殊字符,这也可以:

curl http://www.example.com/index.php?action=$actionString';post=5'