それで、なぜ私がそれほど Linux のファンではないのかとよく尋ねられます。Windows プログラミングでは、\n は \n です。限目。他の解釈はありません。しかし、Linux bash では、何が得られるかは誰にもわかりません。
例: 私がオンラインで調べたすべてのことは次のように言っています: IFS=$'\n'
新しい行で分割されます。誰かが私になぜこれを説明してくれますか:
local OIFS="$IFS"
IFS=$'\n'
local status=$(git status --porcelain 2> /dev/null)
#I even added this just in case:
status=$( status )
#but no matter what length is always 1
local length=${#status[@]}
echo $length
IFS=$OIFS
このリポジトリの git ステータスが 7 行のデータを返すことが確実にわかっている場合、値 1 をエコーしますか? $(echo -en "\n\b") を試してみましたが、"\n" だけを試してみました (改行だけでなく、文字 n だけで分割するのにも十分面白いようです)。 Linuxには存在しません。同じスクリプトを数回実行して、異なる結果を得ることができます。
私が欲しいのは、git status の磁器の結果を取得し、それを新しい行に分割してから、各行のスペースに分割するスクリプトだけです。これにより、次のような配列の配列が作成されます。
[0] "M","modfile.cs"
[1] "A","addfile.cs"
[2] "??","newfile.cs"
しかし、IFSはキャリッジリターンを処理したくないようです。他のコマンドでは、分割文字を変更できる -printf または --pretty 引数があったため、これを修正できました。しかし、ステータスを取得するのは改行のみであり、これまでのところ、bash スクリプトは改行で分割できません。
何か案は?ありがとう Jaeden "Sifo Dyas" al'Raec Ruiner
PS 編集者に、コードではなくコードを決めるのは私だと伝えてください。