あるファイルが最終行になるまでに繰り返し実行するシェルを作りたいです。
とりあえずファイル名を1行ごとに5行程度入れてあるファイル「filemei」を作成しました。
そのファイルからファイル名を順番に取り出し、lsをするものを作ってみたのですが、うまくいきません。
とりあえず、繰り返しにはwhileやforeach、ファイルの読み込みにはawkを使ってみたのですが...
どなたか分かるかたがいれば教えて下さい。
無知なので、質問自体が訳が分からない場合があると思いますが、ご勘弁願います。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

とりあえず、


set a = $<
で、標準入力からの入力が一行、変数aに入ります。
例えば入力が
abcde 12345
であれば
$a = ( abcde 12345 )
となります。
abcde, 12345 はそれぞれ
$a[1], $a[2]
で参照できます。
ですから、
 while ( 条件 )
  set line = $<
  $line を処理
 end
のようにすれば、標準入力からの入力を一行ずつ処理できます。
これを例えばcommandというスクリプトにして
command < file
のようにすれば、指定したファイルからの入力を一行ずつ処理できます。
    • good
    • 0
この回答へのお礼

大変詳しい回答どうもありがとうございました。
勉強になりましたm(..)m

お礼日時:2001/09/18 09:32

失礼致しました。

Cシェルと書いてありましたね。
Cシェルはあまり使わないもので・・・。

以下のようにすれば良いようですよ。

#!/bin/csh
foreach i (`cat filemei`)
ls $i
end
    • good
    • 1
この回答へのお礼

すごくシンプルな回答ありがとうございます。
まさしくこの方式で作成したいと思います。
助かりました。

お礼日時:2001/09/18 09:34

sh で書けばこんな所?



#!/bin/sh
for i in `cat filemei`
do
ls $i
done

このシェルスクリプトをtest.shと名前を付けて保存したならば、

chmod +x test.sh

として実行権を与えておけば、

test.sh

と入力しただけで実行できます。

的外れ??
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q「古い圧縮ファイル」の確認方法

Dドライブのディスクのクリーンアップをしたいのですが、実行できるものが、「古い圧縮ファイル」の削除しかありません。

「古い圧縮ファイル」がどのプログラムかを確認する方法を教えてください。

また、圧縮されたファイルの名前は青くなるらしいのですが、見つかりません。どうしてでしょうか
圧縮ファイルは1G弱あります。

Aベストアンサー

http://www.atmarkit.co.jp/fwin2k/win2ktips/106cleanup/106cleanup.html

初期設定では、50日以上アクセスの無かったファイルに対して、圧縮が行われます。
当然、圧縮してからでないと、ファイル名は青色にはなりませんので、ディスク・クリーンアップでの候補段階では、黒色のままです。


尚、設定によっては青色表示にならない場合も有りますけど。

http://121ware.com/qasearch/1007/app/nec.jsp?005084

QBシェルのawkコマンドについて

Bシェルのawkコマンドについてですが、例えばプロンプトから
% ls -l hoge.txt | awk '{print $5}'

と入力すると、hoge.txtのファイルサイズが出力されますが、同様のことをBシェルの中で行おうと思っています。

下記のように、配列arrayにはスペース区切りで3つのデータが入っており、N番目のデータを取得したいという場合に、Nに変数を使用して取得する方法がわかりません。

#!/bin/sh

array="AA BB CC"
num=3 # CCを取得したい
echo $array | awk '{print $num}'

上記で実行すると、"AA BB CC"のようにすべて出力されてしまいます。awkで出力する箇所を${数値}で指定すればうまくいくのですが、ランダムで決めた数値(1~3)をnumに入れて取得したい場合、このようなことは可能でしょうか。

もし不可能な場合でも、awk以外に何かコマンドがあればご教授願います。なお、作成するのはBシェルになります。

Aベストアンサー

' ' で囲まれた中では、$によるシェル変数置換は効きません。" " で囲むとシェル変数置換が行われます。ただ、
echo $array | awk "{print $num}"
と書くと、$num が 3 のため、
echo $array | awk "{print 3}"
となり、3が表示されるだけです。

echo $array | awk "{print \$$num}"
echo $array | awk '{print $'$num'}'
のどちらか好みのほうを使ってください。私の好みは後者です。

他には、cut コマンドも使えるかと思います。詳しくは、man cut を。

Qファイルの圧縮方法

AVIやMPGの画像ファイルを圧縮する方法を教えてください。900mb位のファイルをCD-Rに落とし込める700mbまで圧縮したいんですが。できれば、zipやlzhなどの後で解凍しなくてはいけないような圧縮方法ではなく、多少画像が荒くなってもファイルを単純に縮小させるような方法を教えていただけると有り難いのですが。。
因みに、TMPGEncを試してみたんですが、どうもうまくいかなくて。。ファイルサイズが元のファイルより逆に大きくなってしまうんです。
すいませんが、宜しくお願いします。

Aベストアンサー

画像圧縮?くす(^^
エンコはTMPGEncやaviutlでやるのがふつーです。
ええ 絶対! 
aviutl
http://ruriruri.zone.ne.jp/aviutl/

zipとかで圧縮しても意味ありません サイズ的に。

で、TMPGEncで元より大きくなるのは問題は
コーデック、画像サイズ、 音声ファイルなど
理由はいっぱいあります。対処は類似質問みて↓
http://oshiete1.goo.ne.jp/kotaeru.php3?q=625581

だから圧縮というか再エンコードが面倒なら
ファイルをテキトーな部分でカットする方向性はどお?
CD-R 2枚に保存 450 450 くらいでカット。
対処は類似質問みて↓
http://oshiete1.goo.ne.jp/kotaeru.php3?q=610331
ではでは!

追伸
カンタンにならrmファイルに変更かなあ
でも画質は落ちますよ
ネット配信 ストリーミング形式でどぞ!
RealplusG2とかRealEncoderで変換
でもaviでもないしmpegでもないですけど、どお?

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=610331

画像圧縮?くす(^^
エンコはTMPGEncやaviutlでやるのがふつーです。
ええ 絶対! 
aviutl
http://ruriruri.zone.ne.jp/aviutl/

zipとかで圧縮しても意味ありません サイズ的に。

で、TMPGEncで元より大きくなるのは問題は
コーデック、画像サイズ、 音声ファイルなど
理由はいっぱいあります。対処は類似質問みて↓
http://oshiete1.goo.ne.jp/kotaeru.php3?q=625581

だから圧縮というか再エンコードが面倒なら
ファイルをテキトーな部分でカットする方向性はどお?
CD-R 2枚に保存 450...続きを読む

Qaから始まるファイルだけlsしたい。

packages(FreeBSD)の中から、Apacheを探したいのですが、wwwディレクトリの中はたくさんありすぎて、一度に表示できません。そこで、aから始まるファイルだけをlsコマンドで表示したいのですが、こういう場合、どういったオプションをつけるとよいのでしょうか?なにかいい方法があったら教えてください。

Aベストアンサー

ワイルドカードを使って、
ls a*
で出来ないでしょうか?

Qファイルの圧縮方法が解りません

窓の杜やベクター等に置かれている、フリーの圧縮、解凍ソフトをダウンロードしていますが、テキストファイルや、画像ファイルの圧縮方法が解りません。何方か教えて頂けませんか?

Aベストアンサー

ソフトの開発者のサイトで質問することをお奨めします。

ソフトごとに操作方法が異なりますので、使用しているソフト名すらない状態では誰も必要とする回答を出せません。

窓の杜やベクターでは開発者のサイトへのリンクがありますから、そこからアクセスできますよ。

Qシェルでファイルを読み込む

csh を使っています。

ファイル hoge には1行に一つずつファイルの / からのパスが記されています。

hoge から 1行ずつファイルパスのリスト読み込んでそのファイルについて ls -al を行なった結果をファイル foo に保存したいのですが、どのようなシェルプログラムを作れば宜しいでしょうか?
awk/sed も使える環境ですので、これらを使ったスクリプトでも構いません。

非常に初歩的な質問で申し訳ありませんが、宜しくお願いします。

Aベストアンサー

cat hoge | xargs ls -al > foo

でいいと思います。

Qpsdファイルの圧縮方法

psdファイルの圧縮方法を教えてください。(基本的質問で恐縮ですが)
win98です。なお、ファイルは9MB程度ですが、圧縮したものを解凍する際、鮮明度が落ちずに元通りの画像で開けますでしょうか?

Aベストアンサー

●大きなサイズのファイルを分割して送付

+Lhaca 1.20 デラックス版での分割方法
http://park8.wakwak.com/~app/Lhaca/

 1. インストールは、ダウンロードした Lhaca120.exe を実行する。
 2. デスクトップに作成された +Lhaca のショートカットに、
   対象のファイルをALTキーを押しながらドロップする。
 3. 保存場所を聞いてくるので、望みの場所を指定する。
   (圧縮形式は、相手が解凍できる形式を選ぶ。)
 4. 分割されたファイル群と結合用のバッチファイルが作成される。
   (デフォルトでは 1.2MB を上限として分割される。)
   (このサイズは +Lhaca で変更できる。)
 5. (4)のファイル全てを、容量を超えないようにメールに添付して送信
   する。
   (添付ファイル総数を本文に明記すること。)
 6. 受け取った側は、全ての添付ファイルを一箇所に集めて、バッチファ
   イルを実行する。
   (操作手順は、本文に明記すること。)
 7. 分割されたファイルが結合されるので、結合された圧縮ファイルを解
   凍する。
 8. 9MBのファイルが解凍されるので、作業する。


これでどうかな!?

※他の圧縮ソフトも分割機能が備わっていると思うが・・・

●大きなサイズのファイルを分割して送付

+Lhaca 1.20 デラックス版での分割方法
http://park8.wakwak.com/~app/Lhaca/

 1. インストールは、ダウンロードした Lhaca120.exe を実行する。
 2. デスクトップに作成された +Lhaca のショートカットに、
   対象のファイルをALTキーを押しながらドロップする。
 3. 保存場所を聞いてくるので、望みの場所を指定する。
   (圧縮形式は、相手が解凍できる形式を選ぶ。)
 4. 分割されたファイル群と結合用のバッチファイルが作成される。
   (...続きを読む

Qawkで二つのファイルを比較し出力する方法

UNIXで二つのファイルを使って別ファイルを出力する
処理をしたいのですが、awkで二つのファイルを扱う方法
が分かりませんでした。
やりたい処理は以下のような事です。

ファイルAの1行目"AAA B"と同じ行がファイルBにあったら、ファイルAの"AAA B"の次の行に、
ファイルBの次の行"YYY bbb"を挟み込みます。

もし、ファイルBに同じ行がなかったら、
ファイルAの次の行に"NG"を挟み込みます。

[ファイルA]
AAA B
ZZZ B
AAA C
ZZZ C
AAA D
ZZZ D

[ファイルB]
AAA B
YYY bbb
AAA C
YYY bbb

[出力ファイル]
AAA B
YYY bbb
ZZZ B
AAA C
YYY ccc
ZZZ C
AAA D
NG

どなたか良いスクリプトありましたら
教えていただけないでしょうか。
よろしくお願いします。

Aベストアンサー

perlで書くと、こんな感じでしょうか:

% cat a.pl
open( FA, $ARGV[0] ) or die;
open( FB, $ARGV[1] ) or die;
while ( $a = <FA> ){
print $a;
if ( eof( FB ) ){ undef $b; } else { $b = <FB>; }
print "NG\n" unless $a eq $b;
last unless defined( $b );
$a2 = <FA>;
$b2 = <FB>;
print $b2, $a2 if $a eq $b;
}

質問で出ている例だと、処理できますが、それ以外の場合は動作保証外ですな。

QNTFS圧縮したファイルを全部まとめて戻す方法

NTFS圧縮したファイルをプロパティからひとつひとつチェックをはずして戻すのではなく、圧縮されたファイルを全部まとめて元に戻す方法ってあるのでしょうか?

Aベストアンサー

圧縮を解除したいファイルを全て選択した状態で
→プロパティ→NTFS圧縮のチェックを外す→OK

それらのファイルがフォルダに入っているなら
フォルダのプロパティからやってもいい。
(サブフォルダにも適用するか尋ねられるからOKにする)

Qシェルスクリプトに手をだしてみたいのですが。。。

Linuxに触れて半月ちょっとの私ですがこれまでRedHat7.3のインストール、ftpの実装、sambaの実装、カーネルの再構築をこなしてきました。
で、次なにしようかなぁと思っていたところ、シェルスクリプトというもの
を発見しましたのでこれに手を出してみようかと思っています。


1.BourneShellの作成手順のようなものを詳しく説明してくれてるサイトを教えてください。自分でも探してみましたがこれより詳しくかつ優しく教えてくれてるサイト知ってる人いませんか?
(Cshって下記サイトでいってるとおり手出さない方が良くて、BourneShell知っておけば十分なんですよね?)
  http://www.oiden.net/Flets/bangai03/
  http://warp.syns.net/10/

2.「シェルスクリプトを使用して何をしたいのか」を当然決めないと作れるものも作れませんが、現時点で想像つくのが指定時間にファイルのバックアップをとる(指定時間なんてできんのか?)とかしか思いつかないのですが、「こんなの最初に作ればスキルアップになんじゃない。」ってゆうのないですか?出来れば答えも一緒にわかるとうれしいです。
 

なにぶんLinux初心者でなおかつ周りに教えてくれる人もなく、頼れるのは
教えてgooのみの悲しい状況です。
漠然とした質問で大変恐縮なのですがどなたか回答ください。

Linuxに触れて半月ちょっとの私ですがこれまでRedHat7.3のインストール、ftpの実装、sambaの実装、カーネルの再構築をこなしてきました。
で、次なにしようかなぁと思っていたところ、シェルスクリプトというもの
を発見しましたのでこれに手を出してみようかと思っています。


1.BourneShellの作成手順のようなものを詳しく説明してくれてるサイトを教えてください。自分でも探してみましたがこれより詳しくかつ優しく教えてくれてるサイト知ってる人いませんか?
(Cshって下記サイトでいってるとおり手...続きを読む

Aベストアンサー

プログラムの知識があればシェルは簡単ですよ。

1.
http://lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/sh-text/sh/
このサイト読めばだいたいは分かると思います。

2.
可能ですよ。作成したシェルスクリプトをクーロンに登録すればOKです。
クーロンについてはオンラインマニュアルを読んでください。(man cron)


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング