zsh
以下の例は、私がスクリプトを「日常的なWTF」と考えていることを示しています。私はzsh
これらの混乱したケースを自分で解決するのに十分な量のルールをよく理解したいと思っていますが、それを理解するのに役立ついくつかの設定、スキル、ツール、またはヒントを探したいと思います。 。少なくとも何が起こったのかを分析するのに役立ちます。いくつかのコードを段階的に実行したり、実行トレースをチェックするためにデバッガを使用するのと本質的に似ています。
私はこれが現在の環境で定義されていない識別子の${(%):-%x}
かわいい略語だと思います。実際、次が本当のようです。${(%)NONEXISTENT:-%x}
NONEXISTENT
# /tmp/test
echo "${(%)NONEXISTENT:-%x}"
echo "${(%):-%x}"
結果:
% zsh /tmp/test
/tmp/test
/tmp/test
だから同じトークンで、私はそれが${(%)-%x}
ただのかわいい略称だと思います${(%)NONEXISTENT-%x}
。
今ごろ予想していたのですが、私が間違っていました。これは、以前に表示されたスクリプトを数行に拡張してからスクリプトに表示されます。
# /tmp/test
echo "${(%)NONEXISTENT:-%x}"
echo "${(%):-%x}"
echo "${(%)NONEXISTENT-%x}"
echo "${(%)-%x}"
結果:
% zsh /tmp/test
/tmp/test
/tmp/test
/tmp/test
569X
もちろん、詳細はスクリプトが実行されるか、スクリプトのソースによって異なります。
% source /tmp/test
/tmp/test
/tmp/test
/tmp/test
5679BJTVXgim