私はFishバージョン3.7.0を実行しており、インデックスに基づいてリストから要素を削除する関数を作成したいと思います。
たとえば、PATH環境変数からインデックス2の要素を削除したいとします。
set -l variable_name PATH
set -l index 2
set -e $variable_name[$index]
ただし、次の文は機能せず、次を返します。
set: --erase: オプションに引数が必要です。
変数名(PATHなど)を取得するには少し遅延評価が必要であることがわかりましたが、どうすればいいかわかりません。
答え1
問題は、fishがこれを$var[$foo]
「$ varのfooth要素」として扱うので、「$ varを拡張して$ fooを拡張してから、2つの要素を一緒に追加する」ことです。
必要なものをさまざまな方法で表現でき、最も簡潔な方法は次のとおりです。
set -e $variable_name[1][$index]
これは $variable_name("PATH") の最初の要素を拡張し、他の要素は構文的に特別なものがないため、[]
最終的に実行されます。
set -e PATH[2]
あなたが望むように。
代わりに、引用符(set -e "$variable_name"[$index]
)、中括弧拡張(set -e {$variable_name}[$index]
)があります。実際には部分$var
をから分離するだけです[$foo]
。インデックスを設定し[2]
て使用するまでset -e $variable_name$index
作業します。