• ベストアンサー

シェルスクリプトの引数

シェルスクリプトの引数 linuxのシェルスクリプトの引数に関しての質問です。引数の数が一桁くらいならいいのですが、200万個の引数を使うとなると、いちいち引数を手で書くわけにはいきません。引数をテキストから直接読み込むことはできませんか?

noname#182748
noname#182748

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

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

200万個の引数?とりあえずbashだと1000万文字くらいは大丈夫でした。シェルによってはコマンドライン長の上限がもっと小さい物もあるかもしれません。 command `cat file` で。

noname#182748
質問者

お礼

回答助かりました。本当にこれで作業がはかどります。

その他の回答 (2)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

xargs という方針もある. もっとも, なんのためにそんなに大量に引数を使うのかが理解できんが.

noname#182748
質問者

お礼

回答ありがとうございます。 ゼミでネットワークのログの解析を行っています。

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.2

こんな感じでファイルの中身を一行ずつ読めます。 #!/bin/sh FILE=test.txt while read LINE do echo $LINE done < $FILE

参考URL:
http://x68000.q-e-d.net/~68user/unix/pickup?%A5%B7%A5%A7%A5%EB%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8
noname#182748
質問者

お礼

URL参考になりました。ありがとうございます。

関連するQ&A

  • linuxのシェルスクリプト

    linuxのシェルスクリプト シェルスクリプトの質問をどこですればよいのかよくわからないので、ここでさせていただきます。 最近、始めてシェルスクリプトの勉強を始めました。 スクリプトに渡す引数を出力したいと思い、 echo $1 echo $2 echo $3 とかくと、スクリプトに渡した引数が出力されます。 これを、for文で書くと for i in 1 2 3 do echo $i done とねるのですが、これでは1,2,3が出力されてしまいます。 どうなおしたらいいのでしょうか? よろしくお願いいたします。

  • シェルスクリプト 引数の引渡しについて

    こんにちは。現在シェルスクリプトを勉強中なのですがどうしてもわからないことがあり投稿させていただきました。 シェルスクリプトにて作成した引数(引数にスペースがある場合)を別のシェルスクリプトへ渡そうとしたときにうまく引き渡せなくて困っています。 詳しくは以下のスクリプト参照願います。 (1)引数作成のスクリプト _/_/_/_/_/_/_/_/_/_/_/_/ #!/bin/sh a="HELLO" b="\"WOW WOW\"" test.sh $a $b _/_/_/_/_/_/_/_/_/_/_/_/ (2)test.sh _/_/_/_/_/_/_/_/_/_/_/_/ #!/bin/sh echo $1 echo $2 echo $3 _/_/_/_/_/_/_/_/_/_/_/_/ これを実行すると $1=HELLO $2="WOW $3=WOW" となってしまいます。 これを $1=HELLO $2=WOW WOW $3=NULL(空欄) となるようにシェルスクリプトで作成することはできないのでしょうか? ご教授よろしくお願いします。 よろしくお願いします。

  • シェルスクリプトの引数について

    test.sh '*.c' といったコマンドを入力した時に、 シェルスクリプト内で引数$1を受け取ったときに$1='*.c'となるのではなく、 カレントディレクトリ内にある'*.c'の正規表現にマッチするファイルが入ってしまっています。 例)カレントディレクト内にaaa.cファイルbbb.cファイルといったファイルがある時は、 $1=aaa.c bbb.cとなっています。 '*.c'の正規表現自体をシェルスクリプト内で受け取る方法はないのでしょうか? シェルはbashを使用しています。

  • シェルスクリプトで困っています 2

    度々申し訳ございません。 現在、Linuxマシン1からLinuxマシン2へTelnetでログインし、Linuxマシン2上にあるシェルスクリプト(/bin/sh)を実行し、Linuxマシン2上のプログラムを実行した後、Linuxマシン2からログアウトするシェルスクリプトを作成中です。 その、Linuxマシン2からログアウトする際に、 "exit"を記述しているのですが、その"exit"がTelnetログアウトの意味で実行されず、シェルスクリプトを終了するの意味で実行されていて困っています。 どなたか上手くTelnetからログアウトできるようにシェルスクリプトを組む方法をご存知ではないでしょうか?もし判りましたらご教授下さい。 よろしくお願い致します。

  • シェルスクリプトのコマンドの中に引数を使いたいのですが

    シェルスクリプトのコマンドの中に引数を使いたいです。 例えば sed -i 's/*/$1/g' /* のように文字置換コマンド中に引数で書き換えられるようにしたいのですがそのまま$1に書き換わってしまいます。渡し方がおかしいのでしょうか?宜しくお願いします。

  • 【初心者】シェルスクリプトの引数に関して

    現在、シェルスクリプトを作成しようと奮闘中です。 そこで引数に関してお伺いさせてください。 以下が実施したい内容になります。 (1)./test.sh ⇒引数を指定していないため、「引数を指定してください。」と出力し処理終了 (2)./test.sh daily⇒引数で指定した[daily]の処理を実行 (3)./test.sh weekly⇒引数で指定した[weekly]の処理を実行 (1)~(3)の条件を含んだシェルスクリプトを作成するには、 どのような実行処理が必要かご教授お願いします。 ※処理内容に関しては特に指定はございません。 例: daily=特定ディレクトリのコピー weekly=dailyで処理したディレクトリをtarで圧縮し別のディレクトリへ移動 など分かりやすい内容だと幸いです。 また、情報に不備などがありましたらご指摘おねがいします。

  • シェルスクリプトについて。

    Bシェルを使って、下記の処理をしたいと思っているのですが 何をやっても上手くいきません;; 分かる方、是非アドバイスいただきたいです! WEBからawk,while等を調べて自分なりにつくってみましたが 文字列の抽出もできない状態です。 ------------------------------ テキスト内容(例) 氏名[タブ]住所[タブ]電話番号 ------------------------------- 上記のような、テキストから住所だけ、指名と住所だけ等の パターンで抜いて、別のシェルの引数として渡すといった処理が したいです。 別のシェルというのは、引数に与えられた内容を、別のファイルに 書き出すという仕組みですが、よくわかりません。 今までいっぱい行がある中から、ひとつひとつ手作業で引数に渡し てたのを、自動でやりたいです。 日本語がおかしい所があると思いますが、宜しくお願いします。

  • シェルスクリプトの問題が分かりません。

    引数に複数の整数を与えたときに、それらの和を計算するシェルスクリプトを作成する。具体的には $ ./sum.sh 1 2 3 4 5 15 のようになるシェルスクリプトである(引数の個数は可変とする)。 どうしてもわかりません。どうか、よろしくお願いします。

  • PHP シェルスクリプト 引数

    失礼します。現在PHPからシェルスクリプトを引数を付けて実行し、戻り値で確認が出来るか試しているのですがなかなか参考になる記事がなく実現が出来ない状態です 調べたところ、 phpからhoge.shというシェルファイルをargという引数で実行したいとします。 引数を"'. .'"で囲う事で、引数を渡せるようです。 $output = shell_exec('/bin/sh /path/to/hoge.sh "'.$arg.'"') var_dump($output) 上記のような記事を見つけたのですがhoge.shはどのように$argを受け取り、戻り値を渡しているのでしょうか?また、$argの値の中身は渡す引数の内容という認識で正しいのでしょうか?サンプルコードなどがあるとうれしいです。 ご教授よろしくお願い致します。

  • シェルの引数チェックについての質問

    どうも、はじめまして。 シェルについて質問させていただきます。 現在、業務で あるプログラムを起動するための起動シェルを作成しております。 そしてその起動シェルではパラメータとして 二つの値を渡しているのですが、 そのパラメータは 1、整数でなければならない 2、整数は1~6桁で7桁以上はエラーとする ということを条件にしております。 ここでプログラムを起動する際の引数チェックとして 適切なロジックをどなたかご教示いただけないでしょうか? 自分としては まず if整数の桁チェック(length)7桁以上  then if 引数が数字であるかどうかのチェック      then プログラムの起動     else エラー else エラー fi と言う風に考えているのですが 引数が数字であるかどうかのチェックがどうにも うまい方法が思いつきません。 (AWK/[0-9][0-9][0-9][0-9][0-9][0-9]) のような形も考えたのですが、これだと 引数が整数で1桁の場合エラーになってしまって・・・。 どなたか良い方法などありますでしょうか。 ちなみに使用OSはソラリスです。 どうぞよろしくお願いいたします。

専門家に質問してみよう