[英]not able to store sed output to variable
我是bash腳本的新手。 我收到一些json響應,而我僅從響應中獲得一個屬性。 我想將其保存到變量中,但是它不起作用token=$result |sed -n -e 's/^.*access_token":"//p' | cut -d'"' -f1 echo $token
token=$result |sed -n -e 's/^.*access_token":"//p' | cut -d'"' -f1 echo $token
它返回空行。我無法使用jq或任何第三方工具。請讓我知道我所缺少的內容。
您的命令應為:
token=$(echo "$result" | sed -n -e 's/^.*access_token":"//p' | cut -d'"' -f1)
您需要使用echo
在標准輸出上打印變量的內容,並且需要使用命令替換$( )
將管道的輸出分配給token
。
始終鼓勵對變量進行報價,以避免出現空格和*
等全局字符問題。
順便說一句,請注意,您可能可以使用以下方法獲得輸出:
token=$(jq -r .access_token <<<"$result")
我知道您已經說過您不能使用jq
但是它是一個獨立的二進制文件(無需安裝),並且以正確的方式對待JSON,而不是任意文本。
試試看:
token="$(sed -E -n -e 's/^.*access_token": ?"//p' <<<"$result" | cut -d'"' -f1)"
token="$( script here )"
意味着$ token設置為通過稱為命令行替換的過程在subshell內運行的腳本的輸出/結果 sed
-E
允許擴展正則表達式 。 我們之所以這樣想是因為JSON通常在:
和下一個"
之前包含一個空格。我們在該空格之后使用?
來告訴sed
該空格可能存在或可能不存在。 <<<"$result"
是一個herestring ,它將數據以stdin的形式饋入sed
而不是文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.