|
こんにちは、山田です。 shellにワイルドカードを含んだ引数を文字列として渡したいのですが上手くいきません。 例えば、 aaa.sh zz*.txt や aaa.sh zz\*.txt と渡すとローカルにある対象となるtxtファイルを全て引数としてもってきてしまいます。 aaa.sh zz'\''*'.txt などとしてもダメなようです。 出来ないのでしょうか? 申しわけありませんが、教えて下さい。 |
|
>>3085 山田 さん、 シェルはなんでしょうか? zsh だと > echo *.txt aaa.txt bbb.txt ccc.txt > echo '*.txt' *.txt のようになりました。 |
|
>>3086 ふくし 様、ご回答ありがとうございます。 cshです。 やりたいことは、 aaa.sh ZZ*.txt と指定した時にshell内で、 set filename = arg[1]とし、 filenameに"ZZ*.txt"という文字列をセットしたいのです。 |
|
>>3087 山田 さん 下で書いたつもりだったんですが (^^;;; 引数「ZZ*.txt」全体をシングルクォート '' で囲んだらどうなります? |
|
>>3086 ふくし 様 >引数「ZZ*.txt」全体をシングルクォート '' で囲んだらどうなります? やはりカレントの該当するファイルが引数に入ってしまいます。 arg[1]の内容が"ZZa.txt ZZb.txt ZZc.txt"というような感じです。 んー、こまっております(^^;) |
|
>>3089 山田 % cat hoge set filename='*.c' echo $filename % csh -fx hoge set filename=*.c echo *.c a.c b.c c.c d.c というわけで、csh では ただの文字列として set しても、 glob 展開されます。よって、参照するたびに echo "$filename" とダブルクォートで囲むか (面倒)、あるいは set noglob で変数を展開しないようにする、と。 もっとよいのは perl や ruby などに乗り換えることです。 |