"$pattern"というディレクトリを作成し、これを削除しようとするたびに次のように表示されます。
パターン:未定義変数です。
私は試した:
$ rm -r $pattern
$ rm -rf $pattern
$ rm "$ option[value='2016']"
答え1
$
、空白'
、[
ほとんどのシェルの特殊文字です。特別な意味を取り除くには、シェルの引用メカニズムを使用する必要があります。
私が知っているすべてのシェルでは、一重引用符、バックスラッシュ、および改行文字を除くすべての文字を引用するために一重引用符を使用できます(Bourneなどのシェルでは、いくつかのバックティックを\
除いて最後の2文字も引用します)。
rm -r '$pattern'
最も一般的なシェルで動作する必要があります。
rm -r \$pattern
シリアルシェルを除くすべてのシェルで動作します(Bourneなどの内部バックティックを除く)rc
。
以下にも適用されます。
rm "\$option[value='2016']"
rc
-like シェルでは以下を使用できます。
rm '$option[value=''2016'']'
答え2
ディレクトリが空の場合:
rmdir \$pattern
それ以外の場合:
rm -r \$pattern
(そのフォルダに含まれるすべてのファイルは再帰的に削除されます。)
答え3
特殊文字を含むファイルを扱う必要がある場合、1つのオプションはbashオートコンプリートを使用することです。コマンドの入力を開始し(この場合rmdir
)Tab、数回クリックします。現在のディレクトリ内のすべてのファイル/ディレクトリを繰り返して、すべての特殊文字を自動的にエスケープします。
これは非常に長いファイル名を扱う場合でもうまく機能します。
答え4
予期しないデータベースコマンドが実行されないようにするには、WebアプリケーションでSQLクエリを作成するときによく使用される "\"でこの文字をエスケープします。