2017-04-26 2 views
0

私はテキスト文字列として扱われる引数を受け入れることができる単純なbashスクリプトを持っています。チルダの '〜'が引数であるかどうかをチェックするBashスクリプトのチェック

~に引用符を付けないと、ホームディレクトリ/home/users/meが解析されます。それを引用、"~"、それはいいです。 「〜」という文字は私が望むものであり、ホームパスではありません。

引用符で囲まれていない~がホームディレクトリのエイリアスではなく文字「〜」として扱われるようにする方法はありますか?

+1

いいえ、それはあなたのスクリプトがそれを見る前にシェルによって解釈されます。 – 123

+0

チルダの展開は、スクリプトではなくシェルによって実行されています。チルダの前にバックスラッシュを付けてチルダの展開を無効にすることもできます。 – ghoti

+0

これを行う必要がある理由はありますか?あなたはコマンドライン引数を引用したりエスケープしたりできませんか? –

答えて

0

引数がスクリプトに渡される前に、bashシェルがコマンドラインで~を展開しています。

そこにあなたのシェルで変更することができますが、あなたの欲しいもののように聞こえないあなたのシェル内のすべてに影響を与えるbashオプションにすることができます。

私は簡単な答えではないと思います。親シェルがスクリプトに引数を渡す前にどのように引数を展開したかを変更するためにスクリプトで行うことは何もありません。

+0

'〜'拡張を無効にするshoptはありません。 https://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html –

+0

ありがとうございます。思ったほど。 –

関連する問題