私はAPIアクセストークンをbash変数に保存することを作成したいので、ssh-agent
あなたが使用する場所をモデル化していますeval
。
SSHエージェント
単独で実行すると、ssh-agent
次のように出力されます。
SSH_AUTH_SOCK=/tmp/ssh-XXXXXXXXXXXX/agent.NNNNN; export SSH_AUTH_SOCK;
SSH_AGENT_PID=NNNNN; export SSH_AGENT_PID;
echo Agent pid NNNNN;
で実行すると、次のようにeval $(ssh-agent)
出力されます。
Agent pid NNNNN
...そしてeval
現在のシェルで環境変数を設定した結果です。
私のスクリプト
私のスクリプトの終わりは次のとおりです($JSON
いくつかの古いカールコマンドで)。
cat <<EOF
API_ACCESS_TOKEN=$(echo $JSON | jq '.access_token')
API_EXPIRES_AT=$(echo $JSON | jq '.expires_at')
export API_ACCESS_TOKEN API_EXPIRES_AT
echo OK
EOF
eval $(./auth)
正しく設定され、$API_ACCESS_TOKEN
を使用して実行すると$API_EXPIRES_AT
(eval
動作します)ただし、「OK」は印刷されません。。
私は何が間違っていましたか?
ベストアンサー1
出力をもう一度見てくださいssh-agent
。;
各コマンドの後にシャットダウンを逃しました。
これにより、スクリプトは目的のタスクを実行します。
セミコロンがない場合、シェルは改行が削除された文字列(ここで説明されている)のコマンドを1つのコマンドとして実行します。