• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:シェルプログラミングでスペースを含むパスの扱い方)

シェルプログラミングでスペースを含むパスの扱い方

このQ&Aのポイント
  • シェルプログラミングでスペースを含むパスの扱い方を解説します
  • スペースを含むパスを引数として渡す際に発生するエラーの対処方法を紹介します
  • バックスラッシュやダブルクォーテーションを使った方法など、複数のアプローチを試すことをおすすめします

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.3

#2の方が書いている通り、program.sh の中に書いてあると思われる、 find $1 -name $2 が間違いですね。 find "$1" -name "$2" 「空白を含む(かもしれない)変数を空白で区切らず一語として扱いたいとき」は、" " で囲んでください。 「空白を含んだ文字列を一語として扱いたいとき」も同じく、" " で囲む。

その他の回答 (2)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

program.shの中身がわからないので、 >\を/に変えて””でくくりました。 とか >" "(スペース)を"\ "(バックスラッシュとスペース)に変えて””でくくって というのがよくわかりませんし、 このfindがC:\Program Files\とかC:/Program Files/とかを解釈できるかもわかりません。 何を使っているか、明記してください。 ( MinGW/MSYSなのか、Cygwinなのか、他の環境なのか) > find $1 -name $2 find "$1" -name "$2" です。 find $1 -name $2 は、展開されて find C:/Program Files -name *.pdf になります。なので、C:/Program と Files に分離されます。 シェルスクリプトのデバッグには、-xや-vオプションを付けて、どんなコマンドが実行されているか確認するとよいでしょう。 sh -v program.sh "C:\Program Files" "*.pdf" sh -x program.sh "C:\Program Files" "*.pdf" sh -v program.sh "C:/Program Files" "*.pdf" sh -x program.sh "C:/Program Files" "*.pdf"

  • DIooggooID
  • ベストアンサー率27% (1730/6405)
回答No.1

C:\Program Files\  この代わりに、 8.3形式 の C:\PROGRA~1\  こちらを使用なさってみては、いかがですか?

one-eyed
質問者

補足

回答ありがとうございます。program.shに渡されるパスが必ずしもProgram Filesを含んでいるとは限らりませんし、それだとまずパスを読んでProgram Filesが含まれているか確認する手間がかかるのでうまくいきません。

関連するQ&A