このオープンソースのbashスクリプトを実行しようとしていますが、入力を解析するときにLinuxを実行すると仮定するため、これはうまくいきません。実際、私はWindowsシステムでcygwinを実行しています。スクリプトに$ IFSをに設定した場所があります。\n
これは残ります。\r
これは正しい文字列と一致しないため、エラーが発生します。
ローカルバージョンのスクリプトを変更するのは簡単ですが、すべてのオペレーティングシステムで実行できるようにするにはどうすればよいですか?いくつかのコマンドを実行して改行文字を取得できる場合は、それを$ IFSに割り当てることができます。
追加のコンテキストのために改行を処理するコードは次のとおりです。
IFS=\n
# Word splitting is intended here
# shellcheck disable=2046
set -- $(printf '%s\n' "$_response" | jq -r '
.error,
.access_token,
.token_type,
.expires_in,
.refresh_token,
.scope')
IFS=$oifs
[ "$1" = "null" ] && ...
テストは "null\r" を "null" と比較することで終了します。
ベストアンサー1
台本には
$IFS
[\n
...]
示したコードはIFS=\n
。残念ながらこれはそうではなく、IFS='\n'
最終的には設定されますIFS=n
。だからとにかくコードを修正する必要があります。