• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:シェルで引数した「*」をそのまま使いたい(OSはFedora12))

シェルで引数した「*」をそのまま使いたい(OSはFedora12)

このQ&Aのポイント
  • シェルで引数した「*」をそのまま使いたい(OSはFedora12)
  • シェルの勉強をしているのですが、掛け算の引数として「*」をそのまま使いたいです。しかし、「*」を引数とすると、実行するフォルダのファイル名が入ってしまいます。どのように「*」をそのまま使うことができるでしょうか?
  • シェルで引数した「*」をそのまま使いたいですが、実行するフォルダのファイル名が入ってしまい、掛け算ができません。どのように「*」をそのまま使うことができるでしょうか?

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

  • ベストアンサー
  • vaguechat
  • ベストアンサー率85% (47/55)
回答No.2

ちょっと補足。 シェルスクリプト側(calc.sh)で何かを行うことだけで > 「*」を「*」としてそのまま受取る方法 を取ることはたぶん難しい。 シェルスクリプトに渡す前にコマンドラインシェル側でワイルドカードを展開してしまうため。 したがって、コマンドラインシェル側で展開機能を抑制してスクリプトに*を受け取らせる必要がある。 そのあと受け取った*をどう扱うかはスクリプトを解釈するシェルの問題なので、 スクリプト中で決めることができる。

sugarko3
質問者

お礼

早速のご回答ありがとうございます。 教えていただいた内容を基に試してみたところ、うまくいきました。 今後もわからないところがあったら、教えて!gooで質問をあげますので、お暇な時にでもご回答頂けるとありがたいです。

その他の回答 (1)

  • vaguechat
  • ベストアンサー率85% (47/55)
回答No.1

シェルの種類にもよるが、例えばbashやBourneシェルなら set -f で*によるパス名の展開が無効になる。そのプログラムの実行を終えたあと有効にするなら set +f つまり、 set -f ./calc.sh * 2 3 4 set +f のように使う。 他のシェルでも類似の機能はあると思うので、 noglobなどのキーワードでシェルのマニュアル内を探してみては?

関連するQ&A