evalはエコーを評価しませんか? [コピー]

evalはエコーを評価しませんか? [コピー]

私は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_ATeval動作します)ただし、「OK」は印刷されません。

私は何が間違っていましたか?

ベストアンサー1

出力をもう一度見てくださいssh-agent;各コマンドの後にシャットダウンを逃しました。

これにより、スクリプトは目的のタスクを実行します。

セミコロンがない場合、シェルは改行が削除された文字列(ここで説明されている)のコマンドを1つのコマンドとして実行します。

おすすめ記事