Score:0

สคริปต์ทุบตี cURL POST เพิ่มเครื่องหมายอัญประกาศเดี่ยวให้กับตัวแปรที่มีช่องว่าง

ธง us

ตัวแปร 3 ตัวแรกจะไม่มีช่องว่างเสมอ ที่สี่ "slacksitename"มีช่องว่าง

ip=âx.x.x.x"
record_name=âdemo.xyz"
slackuri:âเว็บฮุค"
slacksitename:â123 Main St"

เมื่อเรียกด้วย curl

curl -X POST -H 'Content-type: application/json' --data '{"text":"â$slacksitename': '$ip' '$record_name' DDNS updated.â}â $slackuri

ผลลัพธ์จะเป็นดังนี้:

curl -X POST -H 'Content-type: application/json' --data '{"text":"123' Main 'St: x.x.x.x demo.xyz DDNS updated."}' https://hooks.slack.com /บริการ/â¦â¦..
curl: (6) ไม่สามารถแก้ไขโฮสต์: Main
ขด: (3) วงเล็บปีกกาปิดที่ไม่ตรงกัน/วงเล็บปีกกาในตำแหน่ง URL 59:
St: x.x.x.x demo.xyz DDNS อัปเดตแล้ว"

จะมีใครรู้ไหมว่าทำไมมันถึงเพิ่ม single quotes เข้าไป 123' เมน' เซนต์? และฉันจะทำให้ตัวแปรทั้งหมดเป็นสตริงเดียวแทนที่จะแยกมันได้อย่างไร (ซึ่งฉันคิดว่ามันกำลังทำอยู่)

ขอบคุณ

อัปเดต: แก้ไขแล้ว ^^

ติดตาม:

สิ่งนี้อาจตรงกับคำถามเดิม:

ฉันมีตัวแปรที่เป็นเอาต์พุต JSON ที่ฉันต้องการส่งผ่าน cURL ฉันถือว่าปัญหาคือใบเสนอราคาอีกครั้ง แต่เอาต์พุต JSON อาจเปลี่ยนแปลง (จำนวนใบเสนอราคา) มีวิธีการส่งข้อมูลดิบนี้ด้วย cURL ในข้อความด้วยบรรทัดใหม่หรือไม่? ขอบคุณ

ผลการดัมพ์:\n{"result":{"id":"ppbkbz2ezmxen11vvpi65chsro1vki5y","zone_id":"unuM0sR1gSrQ37r9fGC1sYKFZOP0DzJM","zone_name":"demo.xyz","name":"1.demo.xyz"," ประเภท":"A","content":"x.x.x.x","proxiable":true,"proxied":false,"ttl":1,"locked":false,"meta":{"auto_added":false, "managed_by_apps":false,"managed_by_argo_tunnel":false,"source":"primary"},"created_on":"2020-06-14T19:13:57.096688Z","modified_on":"2021-10-16T16:57 :49.269274Z"},"สำเร็จ":จริง,"ข้อผิดพลาด":[],"ข้อความ":[]}"
Score:1
ธง gu

คุณกำลังใช้ตัวแปรที่ไม่มีเครื่องหมายอัญประกาศใน bash และดูประหลาดใจที่การแยกคำเกิดขึ้น นี่คือสิ่งที่ควรจะเกิดขึ้น

คุณยังมีเครื่องหมายคำพูดที่ไม่ได้มาตรฐานในคำถามของคุณ ซึ่งฉันจะถือว่าเป็นเพราะการจัดรูปแบบอัตโนมัติ แต่โปรดทราบว่า " ไม่เหมือนกับ â และ ' ไม่เหมือนกับ ʼ.

curl -X POST -H 'Content-type: application/json' --data '{"text":"â$slacksitename': '$ip' '$record_name' DDNS updated.â}â $slackuri

ในบรรทัดคำสั่งของคุณ คุณกำลังอ้างอิง {"ข้อความ":" และต่อท้ายเนื้อหาที่ไม่ได้ยกมาของ $slacksitename ไปที่มัน ซึ่งหมายความว่าจะมีการแยกคำ ผลลัพธ์ที่ได้จะเป็น 3 อาร์กิวเมนต์แยกกัน: {"ข้อความ":"123, หลัก, เซนต์. อาร์กิวเมนต์ที่สามจะเชื่อมกับ : ซึ่งจะเชื่อมโยงกับเนื้อหาของข้อความที่ไม่ได้ยกมา $ไอพี เราก็มีช่องว่างใดๆ อยู่ในตัวแปรนั้น สิ่งเดียวกันก็จะเกิดขึ้น

นี่คือ bash 101 โดยพื้นฐานแล้วให้อ้างอิงตัวแปรของคุณเว้นแต่คุณจะรู้ว่าคุณกำลังทำอะไรอยู่

northport avatar
us flag
ขอบคุณสำหรับการตอบกลับ. `â` และ `ʼ` เกิดจากความผิดพลาดและไม่ได้อยู่ในสคริปต์ ฉันหลงทางเล็กน้อยว่าจะแก้ปัญหานี้อย่างไร ฉันเข้าใจสิ่งที่คุณพูดเท่าที่ตัวแปรที่ไม่มีเครื่องหมายคำพูดทำให้เกิดปัญหา แต่ฉันไม่แน่ใจว่าตัวแปรที่ยกมาอย่างถูกต้องจะมีลักษณะอย่างไร ขอโทษที่ทำตัวงี่เง่าแบบนี้ คุณช่วยแสดงวิธีอ้างอิงตัวแปรอย่างถูกต้องหรือชี้ให้ฉันเห็นในทิศทางทั่วไปได้ไหม ฉันอ่าน stack overflow [thread](https://stackoverflow.com/questions/10067266/when-should-i-wrap-quotes-around-a-shell-variable) และฉันก็ยังหลงทางอยู่เล็กน้อย ขอบคุณ.
Ginnungagap avatar
gu flag
หากคุณหลงทางกับ bash โปรดอ่าน [คู่มือ](https://www.gnu.org/software/bash/manual/html_node/Double-Quotes.html) โดยเฉพาะอย่างยิ่งเมื่อคุณมีความคิดเป็น เพื่อสิ่งที่คุณกำลังมองหา
Ginnungagap avatar
gu flag
นอกจากนี้ คำถามที่คุณชี้ไปมีตัวอย่างจริงด้วย แล้วคุณได้ลองอะไรที่ไม่ได้ผล?
northport avatar
us flag
ขอบคุณ. คู่มือช่วย มีความคิดเห็นอย่างไรเกี่ยวกับการอัปเดตของฉัน ^^?
Score:0
ธง es

วิธีเดียวที่ฉันสามารถค้นหาได้คือบันทึก json ลงในไฟล์แล้วอ้างอิงใน curl call -d "@"

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา