Bash 脚本将变量作为curl XPOST 命令的内部引号传递

Bash 脚本将变量作为curl XPOST 命令的内部引号传递

我正在编写一个 bash 脚本来调用curl 命令:

#!/bin/bash

while n flag
do
    case "${flag}" in
        n) name=${OPTARG};;
    esac
done
curl -XPOST http://localhost:2468/api/webhook -H 'Content-Type: application/json' --data '{"name":"'"$name"'"}'

但是,这不是解析变量并发送空字符串。当我尝试以下操作时,我得到了相同的结果:

#!/bin/bash

while u:p:n flag
do
    case "${flag}" in
        u) unrar=${OPTARG};;
        p) path=${OPTARG};;
        n) name=${OPTARG};;
    esac
done

curl -XPOST http://localhost:2468/api/webhook -H 'Content-Type: application/json' --data "{/"name/":/"$name/"}"

答案1

您忘记getopts读取脚本参数:

while getopts "u:p:n:" flag
do
    case "${flag}" in
        u) unrar=${OPTARG};;
        p) path=${OPTARG};;
        n) name=${OPTARG};;
    esac
done

另外,如果您想要参数,请不要忘记“n”后面的冒号。没有冒号-n将作为二进制键是/否。

相关内容