shellスクリプトに複数の引数を渡したい
shellスクリプトに複数の引数を渡したいと考えています。
下記のようなperlスクリプトを兼ねる事でやりたいことは達成できました。
これをシェルスクリプトだけでやろうとしていて、ハマってしまい、やり方がわからなかったので、質問しています。
・echo.shの中身
$ cat echo.sh
echo $1 $2
・imglist.plの中身
$ cat imglist.pl
my@imglist= `ls -1 *{.gif,.bmp,.jpg,.jpeg,.png} 2>1&`;
foreach(@imglist){
my@name=split /\./,$_;
system("bash ./echo.sh $name[0] $name[1]");
}
・実行すると、無事echo.shに引数が2つ渡る。
$ perl imglist.pl
abc1 jpg
abc10 png
abc11 png
abc2 jpg
abc3 jpg
これをシェルのみでやろうとして、はまってしまいました。
以下は、パイプ処理等を使ったりしてやってみたのですが出来ませんでした。
・awkでファイル名と拡張子に分解し、パイプで渡そうとしても何故か渡らない・・
$ ls -1 *{.gif,.bmp,.jpg,.jpeg,.png} | awk -F . '{print $1,$2}'| bash ./echo.sh
・ファイルに一旦保存し、catコマンドでパイプで渡しても駄目
$ ls -1 *{.gif,.bmp,.jpg,.jpeg,.png} | awk -F . '{print $1,$2}' > imglist.txt
$ cat imglist.txt | bash ./echo.sh
・echoコマンドを使ってパイプで渡しても駄目
$ echo `cat imglist.txt` |bash ./echo.sh
・for.shというファイルを作成し、for構文でimglist.txtの中身を渡すと引数が一つずつしか渡らない
$ cat for.sh
for id in $(cat imglist.txt);
do
echo $id
done
$ bash for.sh
tile1
jpg
tile10
jpg
どうやれば、コマンドライン上やシェルスクリプトだけで、今回はファイル名と拡張子という形で複数行からなる2つの引数を渡すことができますでしょうか
補足
回答ありがとうございます。 やはりARG_MAXの制限でしょうか? 現在、1Mとしているのですが。。。 そんなに容量があるようには思えないの ですがねぇ。。。 csh以外で頑張ってみます。ありがとう ございました!!