私はいつも、bashスクリプトの引用符内にハードコードされていないパスを使用してきました。そうすれば、パス(ユーザーが入力したもの、ユーザーのホームディレクトリなど)に奇妙な文字やスペース、ダッシュが含まれている場合でも、スクリプトは煩わしくならず、通常どおりに進みます。
しかし、ほとんどのパスで機能しますが、ユーザーのホームディレクトリへのショートカットとしてチルダがあるパスでは失敗することに気づきました。例えば:
# works
install dotfile "/home/user/.dotfile"
# fails
install dotfile "~/.dotfile"
# fails
cp dotfile "~/.dotfile"
引用符は、~
それ自体を解析しないように保護しようとしています。ファイルをにコピーしようとしているので./~/.dotfile
~/
便利なため(そしてシンプルでバグが少ないことを意味します)、スペースやダッシュに対して安全であるため引用符で囲んで使用したいと思います。両方を持つ方法はありますか?
便利なため(そしてシンプルでバグが少ないことを意味する)〜/を使用し、スペースやダッシュに対して安全であるため引用符で囲みます。両方を持つ方法はありますか?
はい、二重引用符を使用することをお勧めします。それらをの周りに置かないでください~/
。その部分は引用符で囲まないでください。
install dotfile ~/".dotfile"
~
拡張は使用HOME
変数を。難しい名前のディレクトリを作成して割り当てHOME
、シェルがどのように動作するかを見てみましょう。
$ mkdir $'/tmp/spaces and\ttabs'
$ HOME=$'/tmp/spaces and\ttabs'
$ cd ~/
$ pwd
/tmp/spaces and tabs
したがって、それは正しく機能しました。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加