bash 中的变量不起作用
variable in bash not working
我的 bashrc 文件中有一个简单的函数,它有 2 个参数并进行 curl 调用。问题是,curl 请求没有获取变量。这是函数...
checkUserName() {
cd ~/
echo "checking for username "
curl -w "@curl-format.txt" -H "Content-Type: application/json" -X POST -d '{"userName": ""}' http://localhost:8080//verify
}
alias unameCheck=checkUserName
然后我用类似...的方式调用它
unameCheck users danwguy
我会看到...
checking for username danwguy
在我的终端提示中,但是当我从我的应用程序查看我的日志时,它显示它正在检查用户名 $2
因此即使 $1 被替换,该变量也不会在 curl 命令中被替换,因为它在我的本地主机上调用了正确的 API。
它在 echo 命令中取代了它,但在 curl 命令中没有。
我什至尝试创建一个局部变量,但仍然不起作用,无论我做什么,它都不会在 curl 调用中替换,但在 echo 调用中会替换。
谁能看出为什么不能正确替换 $2
参数扩展 ($var
) 不会在单引号中扩展。请改用双引号:
$ curl -w "@curl-format.txt" \
-H "Content-Type: application/json" \
-X POST \
-d '{"userName": "'""'"}' \
"http://localhost:8080//verify"
也将参数扩展用双引号括起来以避免 word splitting 和
pathname expansion.
只是对之前评论的注释。
你可以用反斜杠转义双引号,告诉bash解释器不要解释它的特殊含义,所以最终代码如下:
... -d "{\"userName\": \"\"}" ...
这对我来说更明显...
我的 bashrc 文件中有一个简单的函数,它有 2 个参数并进行 curl 调用。问题是,curl 请求没有获取变量。这是函数...
checkUserName() {
cd ~/
echo "checking for username "
curl -w "@curl-format.txt" -H "Content-Type: application/json" -X POST -d '{"userName": ""}' http://localhost:8080//verify
}
alias unameCheck=checkUserName
然后我用类似...的方式调用它
unameCheck users danwguy
我会看到...
checking for username danwguy
在我的终端提示中,但是当我从我的应用程序查看我的日志时,它显示它正在检查用户名 $2 因此即使 $1 被替换,该变量也不会在 curl 命令中被替换,因为它在我的本地主机上调用了正确的 API。 它在 echo 命令中取代了它,但在 curl 命令中没有。
我什至尝试创建一个局部变量,但仍然不起作用,无论我做什么,它都不会在 curl 调用中替换,但在 echo 调用中会替换。 谁能看出为什么不能正确替换 $2
参数扩展 ($var
) 不会在单引号中扩展。请改用双引号:
$ curl -w "@curl-format.txt" \
-H "Content-Type: application/json" \
-X POST \
-d '{"userName": "'""'"}' \
"http://localhost:8080//verify"
也将参数扩展用双引号括起来以避免 word splitting 和 pathname expansion.
只是对之前评论的注释。
你可以用反斜杠转义双引号,告诉bash解释器不要解释它的特殊含义,所以最终代码如下:
... -d "{\"userName\": \"\"}" ...
这对我来说更明显...