• ベストアンサー

*を渡す方法。

今日は シェルに*をそのまま渡したいのですが、展開指されていまい、うまくいきません。何か良い方法がありますか。 たとえばtest.shを #!/bin/bash FILE=$1 echo $1 と書き、 . ./test.sh *と 実行すると*が展開されてhoge/hoge/hogeといった風に 実行されてしまいます。 実行結果を * にする方法ありますか。

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

  • ベストアンサー
  • nightowl
  • ベストアンサー率44% (490/1101)
回答No.3

こんにちは、お返事ありがとうございます。 (できれば notnot さんにもお返事を) set の引数は -option/+option の形で有効/無効になります。 「set -f」を無効にするには「set +f」、 「set -o noglob」の形式なら「set +o noglob」で打ち消せます。 ところで、 >FILE=$1 >echo $1 のところはせっかく変数に代入しているので FILE=$1 echo $FILE が本来ではないのかなとふと思いました。 つまらぬことを申したならお聞き流しください。

kabutorikikori
質問者

お礼

大変親切に回答して頂きありがとうございました。 よくわかりました。 echo $1は打ち間違えました。 すいません。

その他の回答 (2)

  • nightowl
  • ベストアンサー率44% (490/1101)
回答No.2

こんばんは。シェルスクリプトを #!/bin/bash set -f # set -o noglob に同じ FILE=$1 echo $1 と書いて、 $ ./test.sh \* でもいいかと。詳しくは「help set」してみてください。

参考URL:
http://www.icrr.u-tokyo.ac.jp/~aitau1/command/set.html
kabutorikikori
質問者

お礼

ありがとうございました。 大変参考になりました。 setはunsetで解除できないのですが 解除するにはどうしたらいいのでしょうか。 たびたびすいません。

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

スクリプトを、 #!/bin/bash FILE="$1" echo "$1" として、 . ./test.sh "*" と起動する。 なお、ドットコマンドでスクリプトを実行すると1行目の#!/bin/bashは単なるコメントとして無視されて、ログインシェルで実行されます。

kabutorikikori
質問者

お礼

ありがとうございました。 このやり方には気づきませんでした。 kabutorikikoriより

関連するQ&A