一些研究揭示了一些有用的stackexchange職位,即expanding variable in CURL,但給出的答案似乎並不恰當處理有空格的bash的變量。擴大與空間變化成捲曲POST變量
我一個變量設置爲AWK的輸出,解析子串(實際上截斷爲150個字符)。我試圖通過curl發佈的字符串中有空格。
當我使用下面的捲曲參數,POST變量Body
被設定爲所述第一空間之前的字符串的一部分。
curl -X POST 'https://api.twilio.com/2010-04-01/Accounts/GUID/SMS/Messages.xml' -d 'From=DIDfrom' -d 'To=DIDto' -d 'Body="'$smsbody'" -u SECGUID
smsbody
被設定爲:
smsbody="$(echo $HOSTNAME$ $SERVICEDESC$ in $SERVICESTATE$\: $SERVICEOUTPUT$ | awk '{print substr($0,0,150)}')"
使張貼的smsbody
唯一部分是$HOSTNAME$
(這恰好是沒有任何空格字符的字符串)。
什麼是捲曲的語法我應該使用嵌套bash的變量適當擴大,但被視爲一個單一的數據字段?
看起來很瑣碎,但我惹了一段時間沒有運氣的報價。我認爲更好的CLI-fu可以在一秒之內處理它。
謝謝!
感謝馬特!當我嘗試'Body ='$ smsbody''時,curl字面上發送字符串'$ smsbody'(字面意思,不擴展變量)。我會嘗試在空格字符前使用'sed'在字符串中添加轉義字符'\',並按照您的建議查看是否可行! – mbrownnyc
我剛剛做了一個編輯,因此請確保您的答案是最新的。祝你好運! –
這工作!非常感謝!捲曲只能在逃離空間字符時展開卷曲內的變量。我簡單地試圖兩次管道而不是設置額外的bash變量。我會分開處理這個問題。現在我只是使用條件'&&'(可能)在一行中執行兩個命令。 – mbrownnyc