ダッシュで始まり、中央にスペースがあるファイルを入力するスクリプト

ダッシュで始まり、中央にスペースがあるファイルを入力するスクリプト

pandocを使用して.mdファイルを.pdfに変換するシェルスクリプトがあります。

たとえば、スクリプトを実行する場合:

./script*file.md

次のようなため、変換する必要があるファイルを検出できません。

- 最初のファイル.md

second_file.md

最初はダッシュで始まります。 2番目は、中間スペースの間にアンダースコアがあります。

答え1

スクリプトはファイルのファイル名を使用する可能性が高く、その名前は次のようないくつかのユーティリティのオプションセットとして解釈されます。

rm "$filename"

$filenameダッシュで始めます。

パス名がダッシュで始まる場合、コマンドが正しく実行されることを確認するには2つの方法があります。

  1. パス名を確認してくださいダッシュで始まらないたとえば、絶対パスまたは相対パスが含まれます。で現在のディレクトリのファイルを削除するには、rm "$filename"必ず$filenameで始めてください./。これは通常ループを変更する問題です。

    for filename in some-pattern; do
    

    入力する

    for filename in ./some-pattern; do
    
  2. --以下のように、ユーティリティにコマンドラインオプションの終わりを通知するために使用されます。

    rm -- "$filename"
    

    コマンドラインでオプションの解析が停止し、後続のすべての引数--は可能なオプションではなくユーティリティのオペランドとして扱われます。これは、コマンドラインからユーザーからパス名を受け取り、パスが含まれているかどうかわからない場合に最適なソリューションです。./ユーザーが絶対パスを指定した場合でも、パス名を現在のディレクトリに相対的に指定するため、指定されたパス名の前にのみプレフィックスを付けることはできません。

スペースなどを含むファイル名に関連します。

関連情報