現在、ユーザーがOAuth資格情報を確認し、リフレッシュトークンを返すように要求するスクリプトがあります。ユーザーがリフレッシュトークンを直接入力する必要があるのは面倒です。ファイルを自動的に編集し、リフレッシュトークンがない場合は、リフレッシュする方法があると思います。たとえば、
#!/bin/bash
REFRESH_TOKEN=
if [ -z "$REFRESH_TOKEN" ]; then
(opens a webpage for the user to authenticate themselves)
(we then pull the refresh token programmatically and set it)
REFRESH_TOKEN=$(some api call)
fi
ユーザーがREFRESH_TOKEN
変数を空の状態でこのコマンドを実行している場合、リアルタイムまたは実行後に2番目の行を更新する方法はありますか?試してみましたが、やはり影響をsed
受けて動作しません REFRESH_TOKEN=$(some api call)
。
ベストアンサー1
質問を誤解しないsed
限り、正規表現を追加して^
囲む$
限り機能します。例えば
sed 's/^REFRESH_TOKEN=$/REFRESH_TOKEN={token}/g'
REFRESH_TOKEN=
行内の唯一の項目のみが一致するため、動作します。そのREFRESH_TOKEN=$(some api call)
部分はそれに続く項目の影響を受けてはいけません。=
次のようにsedの範囲を制限することもできますが、
sed '2 s/REFRESH_TOKEN=/REFRESH_TOKEN={token}/g'
これは次の場合にのみ良い解決策です。確認する交換する必要がある行は常に2行です。