私は、シェルスクリプトの下に、私はgit diff
とgit add
できない
を行うにはアマチュアのシェルスクリプトのコーダしようとしていますが、私は$a
とgit diff $a
ない印刷することはできませんよ期待どおりに動作します。
#!/bin/sh
GITSTATUS=($(git status))
for x in ${!GITSTATUS[@]}; do
if [[ "${GITSTATUS[$x]}" == *"modified"* ]]; then
a=`echo ${GITSTATUS[$x]} | sed 's/modified://'`
echo "Modified file :$a" ## <-- Does not show filename
git diff $a ## <-- Does not operate correctly
echo "Do you want to add this file: (Y/n)"
fi
done
変数をコマンドとともに使用する方法を教えてください。
あなたは '/ bin/sh'で配列を使用しようとしています。これはPOSIX shで利用可能な機能ではありません。代わりにkshまたはbashを使用する必要があります。 –
ところで、強調表示/書式設定のためにコード内に '**'などを使用しないでください - 現在の言語に適したコメント文字を使用してください。 –
...それを超えて、 'array =($(somecommand))'はそれをサポートしているシェルでさえ悪い習慣です。文字列分割だけでなく、somecommand '。代わりにIFS上で単語を分割するが、グロブを展開しない* read -r -a array <<(somecommand)を使用してください。実際には配列の有効なユースケースが存在するとは限りません。 –