- ベストアンサー
*を渡す方法。
今日は シェルに*をそのまま渡したいのですが、展開指されていまい、うまくいきません。何か良い方法がありますか。 たとえばtest.shを #!/bin/bash FILE=$1 echo $1 と書き、 . ./test.sh *と 実行すると*が展開されてhoge/hoge/hogeといった風に 実行されてしまいます。 実行結果を * にする方法ありますか。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは、お返事ありがとうございます。 (できれば notnot さんにもお返事を) set の引数は -option/+option の形で有効/無効になります。 「set -f」を無効にするには「set +f」、 「set -o noglob」の形式なら「set +o noglob」で打ち消せます。 ところで、 >FILE=$1 >echo $1 のところはせっかく変数に代入しているので FILE=$1 echo $FILE が本来ではないのかなとふと思いました。 つまらぬことを申したならお聞き流しください。
その他の回答 (2)
- nightowl
- ベストアンサー率44% (490/1101)
こんばんは。シェルスクリプトを #!/bin/bash set -f # set -o noglob に同じ FILE=$1 echo $1 と書いて、 $ ./test.sh \* でもいいかと。詳しくは「help set」してみてください。
お礼
ありがとうございました。 大変参考になりました。 setはunsetで解除できないのですが 解除するにはどうしたらいいのでしょうか。 たびたびすいません。
- notnot
- ベストアンサー率47% (4900/10358)
スクリプトを、 #!/bin/bash FILE="$1" echo "$1" として、 . ./test.sh "*" と起動する。 なお、ドットコマンドでスクリプトを実行すると1行目の#!/bin/bashは単なるコメントとして無視されて、ログインシェルで実行されます。
お礼
ありがとうございました。 このやり方には気づきませんでした。 kabutorikikoriより
お礼
大変親切に回答して頂きありがとうございました。 よくわかりました。 echo $1は打ち間違えました。 すいません。