人々のシステムで部分的に変更されたディレクトリを見つけようとするbashスクリプトがあります。
cd "$HOMEDIR/AppData/Local/GitHub/PortableGit"*"/bin"
しかし、これはうまくいかないようです。文字列リテラルのみを許可します。
正しくサイズを変更する簡単な方法はありますか?
編集する:
まあ、変ですね。たまには効果がある時もありますよ。
私がこれを行うとき:
GIT_DIR=$HOMEDIR/AppData/Local/GitHub/PortableGit*/bin
eval GIT_DIR_PASS=$GIT_DIR
echo $GIT_DIR_PASS
正確な情報を得ました。
ただし、$ GIT_DIR_PASSを別の変数に割り当てようとすると、文字列リテラルバージョンが表示されます。
ベストアンサー1
GIT_DIR=$HOMEDIR/AppData/Local/GitHub/PortableGit*/bin
上記のワイルドカードは、次のものを含むことができるスカラー変数に割り当てるため、拡張されません。一つ文字列なので、トークン化やファイル名の生成は発生しません。
eval GIT_DIR_PASS=$GIT_DIR
ここでは単純なコマンドの引数なので、ワイルドカードは拡張されますが、パスは"GIT_DIR_PATH=..."
。
echo $GIT_DIR_PASS
ここではワイルドカードが拡張されます。変数の内容を印刷する代わりに変数が参照されないため、拡張によって生成された引数のリストを印刷します。
あなたが望むもの:
set -- "$HOMEDIR"/AppData/Local/GitHub/PortableGit*/bin
つまり、パターンを一致するファイルのリストに展開し、それを$1
、$2
...に割り当てます。
GIT_DIR=$1
最初のものを選択してください。