ユーザー入力を受け入れ、複数のタスクを実行するスクリプトがあります。私が心配していることの1つは、ファイル名を取得してファイルを削除することです。たとえば、rm -rf $arg1 です。
技術的には、ユーザーはこのパラメータに/を入力してコンテンツを削除できます。実際に、rmコマンドを実行する前にすべてのシンボルがエスケープされるようにするにはどうすればよいですか? (すべてが1つのディレクトリで発生するため、私の要件は文字と数字のみです。)
私は一つを思い出したecho "$name" | grep -v symbols > $newname
これが良いアプローチかどうかはわかりません。これについてどんな提案がありますか?
答え1
grepを使用して確認します(
/
sum*
)。if echo "$user_cmd" | grep '*\|\/'; then ... fi
しかし、…権限の問題と考える必要があります。ロック権限を持つグループにスクリプトを使用するユーザーを割り当てます。ファイル拡張子()
.
にピリオド()を使用できるので、単に文字を削除するよりも優れています。.JPG
../../