状況は次のとおりです(私は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番目の変数を参照してください。