bash 引号内的字符串格式
bash string formatting within a quote
我试图在 bash 脚本中概括一个命令,但我受困于一些字符串格式。
我正在尝试重新创建的代码(有效)
curl -X POST -H 'Content-Type: application/json' $CLUSTER -d '{
"source" : "s3://blah/part-00004-9d2ba62f-496e-4cfd-9001-f40f0e33e927-c000.csv",
"format" : "csv"
}'
使用以下命令(不起作用)
filename='part-00004-9d2ba62f-496e-4cfd-9001-f40f0e33e927-c000.csv'
curl -X POST -H 'Content-Type: application/json' $CLUSTER -d '{
"source" : "s3://blah/$filename",
"format" : "csv"
}'
我也尝试了 Expansion of variables inside single quotes in a command in Bash 的提示,但没有成功。
"source" : '"s3://blah/$filename"',
有什么想法吗?
试试这个(参见 "'"
):
filename='part-00004-9d2ba62f-496e-4cfd-9001-f40f0e33e927-c000.csv'
curl -X POST -H 'Content-Type: application/json' $CLUSTER -d '{
"source" : "'"s3://blah/$filename"'",
"format" : "csv"
}'
第一个 "'"
是“-d 参数的双引号符号,关闭单引号转义,开始双引号转义”。第二个"'"
类似
我喜欢使用 jq
从 shell 脚本中用户提供的值构建 JSON,如果您的文件名(或其他)碰巧有JSON 中需要特殊处理的任何字符都会自动处理。像
filename='part-00004-9d2ba62f-496e-4cfd-9001-f40f0e33e927-c000.csv'
curl -X POST \
-H 'Content-Type: application/json' \
"$CLUSTER" \
-d "$(jq -n --arg filename "$filename" '{source:"s3://blah/\($filename)",format:"csv"}')"
我试图在 bash 脚本中概括一个命令,但我受困于一些字符串格式。 我正在尝试重新创建的代码(有效)
curl -X POST -H 'Content-Type: application/json' $CLUSTER -d '{
"source" : "s3://blah/part-00004-9d2ba62f-496e-4cfd-9001-f40f0e33e927-c000.csv",
"format" : "csv"
}'
使用以下命令(不起作用)
filename='part-00004-9d2ba62f-496e-4cfd-9001-f40f0e33e927-c000.csv'
curl -X POST -H 'Content-Type: application/json' $CLUSTER -d '{
"source" : "s3://blah/$filename",
"format" : "csv"
}'
我也尝试了 Expansion of variables inside single quotes in a command in Bash 的提示,但没有成功。
"source" : '"s3://blah/$filename"',
有什么想法吗?
试试这个(参见 "'"
):
filename='part-00004-9d2ba62f-496e-4cfd-9001-f40f0e33e927-c000.csv'
curl -X POST -H 'Content-Type: application/json' $CLUSTER -d '{
"source" : "'"s3://blah/$filename"'",
"format" : "csv"
}'
第一个 "'"
是“-d 参数的双引号符号,关闭单引号转义,开始双引号转义”。第二个"'"
类似
我喜欢使用 jq
从 shell 脚本中用户提供的值构建 JSON,如果您的文件名(或其他)碰巧有JSON 中需要特殊处理的任何字符都会自动处理。像
filename='part-00004-9d2ba62f-496e-4cfd-9001-f40f0e33e927-c000.csv'
curl -X POST \
-H 'Content-Type: application/json' \
"$CLUSTER" \
-d "$(jq -n --arg filename "$filename" '{source:"s3://blah/\($filename)",format:"csv"}')"