ワイルドカードで作成され、スペースを含むパスを変数に保存する方法

ワイルドカードで作成され、スペースを含むパスを変数に保存する方法

状況は次のとおりです(私はMac、OS X El Capitanを使用しています)。

# This works:

$ cd /Applications/Adobe\ Illustrator*/Cool\ Extras.localized/en_US/Templates/;

# These do not work:

$ INSTALL_DIR=/Applications/Adobe\ Illustrator*/Cool\ Extras.localized/en_US/Templates;
$ cd $INSTALL_DIR
# Moves me here: /Applications/Adobe

$ cd "$INSTALL_DIR"
-bash: cd: /Applications/Adobe Illustrator*/Cool Extras.localized/en_US/Templates: No such file or directory

$ cd "${INSTALL_DIR}"
-bash: cd: /Applications/Adobe Illustrator*/Cool Extras.localized/en_US/Templates: No such file or directory

$INSTALL_DIR私の目標は次のように使用することですtar

$ tar -xz $SOURCE_ZIP --strip-components 1 -C $INSTALL_DIR "*.ait";

残念ながら(ターゲットディレクトリに変更)は;の空白が-C好きではありません。$INSTALL_DIR引用符を使用すると正しく機能しません*

この状況を処理するエレガントな方法はありますか?

ベストアンサー1

* が引用されない場合、シェルはコマンドを実行する前に引数リストを拡張します。拡張引数のリストをプログラムに渡します。

*が引用符付き文字列に表示されると、プログラムに渡される前にシェルによって拡張されません。

パスを展開して別の変数に割り当ててから、パラメータとして渡すときは、2番目の変数を参照してください。

おすすめ記事