Bash
將有效命令的結果導出為 bash 變數時出錯
我正在嘗試將命令行的結果導出為 en 環境變數。這是我的做法:
group_id=$(aws ec2 describe-security-groups --filters Name=group-name,Values=${group_name} \ | jq '.["SecurityGroups"][0].GroupId' \ | sed -e 's/^"//' -e 's/"$//' )
但是,當我執行 bash 文件時,出現以下錯誤:
Error parsing parameter '--filters': Expected: '=', received: 'EOF' for input: ^
該命令是有效的,因為當我直接從命令行嘗試它時它可以工作。當我
set -exv
在這個 bash 文件的頂部使用時,我會得到文件的內容:+ case $1 in + init aws ec2 describe-security-groups --filters Name=group-name,Values=${group_name} \ ++ aws ec2 describe-security-groups --filters Name=group-name,Values=docker-networking ' ' Error parsing parameter '--filters': Expected: '=', received: 'EOF' for input: ^ + group_id=
知道為什麼我會收到此錯誤嗎?
反斜杠後似乎有一個空格。要進行多行命令,反斜杠必須是一行的最後一個字元。
從 的輸出推導出
set -xv
:++ aws ec2 describe-security-groups --filters Name=group-name,Values=docker-networking ' ' here -> ~~~