トップページunix
1001コメント351KB

シェルスクリプト総合 その16

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2010/02/20(土) 14:10:05
シェルスクリプトの総合スレです。 
スクリプトのお勉強・自慢・腕試しなどにどうぞ。 
まずは注意点、リンク、地鎮祭など(>>1-6くらい)をご覧ください。 

□お約束 
・特記なき場合はBourne Shell(/bin/sh)がデフォルトです。 
 bash/zsh/ksh/ashなどに依存する場合は明示しましょう。 
 Linuxユーザは/bin/shの正体がbashなので特に注意。 
 FreeBSDユーザは/bin/shの正体がashなので注意。 
 v7 shに一番近くて、現役のshは、OpenSolaris由来のheirloom sh。 
  http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/sh/ ;
  http://heirloom.sourceforge.net/sh.html ;
・csh/tcshのシェルスクリプトは推奨されません。 
 (理由は「csh-whynot」でググれ) 
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。 
 manや参考リンクを見ましょう。 
 aproposないしはman -kでそれらしい単語による簡単な検索もできます。 
・シェルスクリプトのことをシェルってゆーな 
・シェルで使えるワイルドカード等は正規表現ではありません。 
 正規表現の話題はスレ違い(正規表現スレへ) 

□初心者へのアドバイス: 
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも 
 RubyやPerlの方が適した仕事には素直にそちらを使いましょう。 
・知らないコマンドが出てきたらmanを引きましょう。 
・思い通りに動かないときは、まずは sh -x でトレースしましょう。 

前スレ 
シェルスクリプト総合 その15
http://pc12.2ch.net/test/read.cgi/unix/1246408968/l50
0423名無しさん@お腹いっぱい。2010/05/15(土) 13:35:04
>>421
> >>418は流れを読まないバカのようだから相手にする必要は無い。

もし/dev/tcpを使ったことがあるなら「ある」と一言答えられるよな。
やっぱり/dev/tcpを使ったことなかったんだww

知らない分野の質問には口をはさまないほうがいいよ。
0424名無しさん@お腹いっぱい。2010/05/15(土) 13:40:10
> もし/dev/tcpを使ったことがあるなら「ある」と一言答えられるよな。
はい、妄想。
0425名無しさん@お腹いっぱい。2010/05/15(土) 13:46:47
ほら、100%の証拠と鑑定書はどうしたんだよ。降参か? www
0426名無しさん@お腹いっぱい。2010/05/15(土) 13:56:59
>>424
「妄想」=「オマエの降参」

>>425
100%の証拠の議論とは別に、状況証拠でいいから >>425 の /dev/tcpに関する
知識レベルを聞いてるんだ。

このままだと >>425 は /dev/tcpを知らずに「知ったか回答」「誤誘導」をしたという
疑いが晴れない。
100%の疑いではなくても、疑いがあることに変わりはない。
疑いが晴れてない状態でいいなら反論しなくてもいいよw
0427名無しさん@お腹いっぱい。2010/05/15(土) 13:57:33
なんか荒れてるな。
しかし/dev/tcpってcygwinのbashでも使えるんだな。勉強になったわ。
0428名無しさん@お腹いっぱい。2010/05/15(土) 14:00:04
>>426
100%の証拠があると言ったのはお前だぞ。 忘れたならアンカー打ってやる。>>417
その100%の証拠と鑑定書出せよ。www

出したら答えてやるよ。www
0429名無しさん@お腹いっぱい。2010/05/15(土) 14:03:28
>>428
おれは答えてなんか要らないよ。

/dev/tcpを知っていたという状況証拠を出すことは、
オマエ自身の利益になること。
それを答えられなかったらオマエ自身の疑いが晴れないんだから。

で、結局答えないのなら、>>428 は/dev/tcpを知らなかったという疑い濃厚なまま
議論が打ち切られました、となる。
0430名無しさん@お腹いっぱい。2010/05/15(土) 14:09:28
>>429
お前の論理
>>392
> つまり、反論できないことを認めたのですねw

でいくと、100%の証拠とやらは妄想だったという事を認めたのですねw
ことになるが、それで良いんだな? www
0431名無しさん@お腹いっぱい。2010/05/15(土) 14:13:03
>>430
100%の証拠はすでに書いてる。(読み返せば済むこと)
で、そっちの議論は終ったので、
次に、
状況証拠レベルでさえオマエは出せないことを指摘してるんだ。

>>430 は/dev/tcpを知らなかった」という疑いが残ったままになれば
>>430 のプライドを潰すには十分だからね。
0432名無しさん@お腹いっぱい。2010/05/15(土) 14:13:33
>>429

>>419の通り、知らなかったはずだと言いがかりをつけるお前が証拠を出し
て立証する義務がある。しかし、100%の証拠とやらは唐桟ながら妄想のよう
なので、妄想を元にした言いがかりと言う事がこれにて判明した。
0433名無しさん@お腹いっぱい。2010/05/15(土) 14:16:02
>>431

> 100%の証拠はすでに書いてる。(読み返せば済むこと)
どのレスだよ。100%であるという鑑定書は? アンカー位うったらどうか? www
0434名無しさん@お腹いっぱい。2010/05/15(土) 14:22:55
>>432 >>433
100%の証拠は、
>>349 >>350 >>351 に対する反論が無かったという事実、
及びその関連レスすべて。


で、100%の証拠の件にかかわらず、
お前のプライドも潰れた。

なぜなら、お前は/dev/tcpを知っていたとか、使ったことがあったとかいう
状況証拠すら出せなかったから、疑われたままになってる。

お前は口ぐせのように「妄想」と言うが、
自分が正しいなら、他人から間違った妄想をされてるだけでも嫌なはずだ。
現在、お前は「/dev/tcpを知らない人」と「妄想」されてる。
これだけでもプライドを潰すには十分。

# 実際には妄想ではなく事実。念のため。
0435名無しさん@お腹いっぱい。2010/05/15(土) 14:23:39
しつこいので>>418も相手にしてやろう。
>>277からのレス読んだ上で、なぜ>>418の質問をしたんだ?
0436名無しさん@お腹いっぱい。2010/05/15(土) 14:26:20
>>434
妄想を証拠と言っていいのは小学生だけ。ww
100%であるという鑑定書は?

> 現在、お前は「/dev/tcpを知らない人」と「妄想」されてる。
キチガイは妄想するのが仕事なので、お前が妄想しても何の痛痒も感じない。
0437名無しさん@お腹いっぱい。2010/05/15(土) 14:27:29
訂正
× キチガイは妄想するのが仕事なので、お前が妄想しても何の痛痒も感じない。
○ キチガイやバカは妄想するのが仕事なので、お前が妄想しても何の痛痒も感じない。
0438名無しさん@お腹いっぱい。2010/05/15(土) 14:29:11
>>436
「妄想」してるのはおそらく俺だけではない。

おまえは「/dev/tcpを知らない人」と「妄想」されてても平気なのかw
それで十分だ。お前のプライドは潰れたな。
0439名無しさん@お腹いっぱい。2010/05/15(土) 14:39:48
>>438
> 「妄想」してるのはおそらく俺だけではない。
それ自体が、お前の妄想だから何の痛痒も感じない。

妄想である事を認め逃げ出すようだからまとめておこう。

これまでのまとめ
>>277がbashに関する質問をする
>>278がlinux板に誘導する
>>279が移動する。
>>279-284(除く>>283)が余計なレスを付ける
>>285が再度linux板へ誘導する。
>>286が妄想を元に言いがかりをつけ、以降粘着する。
0440名無しさん@お腹いっぱい。2010/05/15(土) 14:42:53
なんか、ここ最近、言葉遣いがあれてるよね。
そんなに仕事無いの?>Unix系
0441名無しさん@お腹いっぱい。2010/05/15(土) 14:48:55
>>439
>>439 自身が墓穴を掘ってる。

>>283 で正解レスがあったのに、その意味を十分理解せず、
それより「後」の
>>285 で、再度Linux板へ誘導している。← これが間違い。

>>363 が指摘してる致命症発言を再度貼っとく。

>この発言が致命症だね。
>「/dev/tcpだから犬板」とストレートに言ってる。
>弁解の余地なし。

「妄想だ」と言うのは結構。「妄想」であっても >>439 のプライドは潰れたのだから。
0442名無しさん@お腹いっぱい。2010/05/15(土) 14:52:43
>>441
キチガイやバカは妄想するのが仕事なので、お前が妄想しても何の痛痒も感じない。
0443名無しさん@お腹いっぱい。2010/05/15(土) 14:55:42
補足、
>>285 は、>>283 の「/dev/tcpの機能がdisableされてコンパイル」を、
bashではなく、Linuxカーネルのコンパイルのことと勘違いしていた。

だからこそ、>>285 で、
「Linuxカーネルのコンパイル時に設定する/dev/tcpの話だからLinux板へ行け」
と言う意味の発言をした
0444名無しさん@お腹いっぱい。2010/05/15(土) 14:57:21
> >>285 は、>>283 の「/dev/tcpの機能がdisableされてコンパイル」を、
> bashではなく、Linuxカーネルのコンパイルのことと勘違いしていた。
と妄想した>>443が粘着して妄想を書き散らした。

キチガイやバカは妄想するのが仕事なので、お前が妄想しても何の痛痒も感じない。
0445名無しさん@お腹いっぱい。2010/05/15(土) 16:02:21
ものすごいレス応酬を見たけど全部読み飛ばした
0446名無しさん@お腹いっぱい。2010/05/15(土) 16:04:58
これだけ仲が良いんだから、メアドでも交換し合えば良いのになw
0447名無しさん@お腹いっぱい。2010/05/15(土) 16:11:08
むぅ、たしかに
0448名無しさん@お腹いっぱい。2010/05/15(土) 19:18:35
これは質問も出来ない。
0449名無しさん@お腹いっぱい。2010/05/15(土) 21:27:10
>>445
正解。
0450名無しさん@お腹いっぱい。2010/05/15(土) 21:32:21
/dev/tcp だけ読んだ

でもCygwinじゃ使えなかったぜ!
0451名無しさん@お腹いっぱい。2010/05/15(土) 22:03:46
>>285 に対する反例が出たよ。

>>450 が言うように、Cygwinでも/dev/tcpがdisableでインストールされてることもある。

>>285 がLinux板に誘導したのは間違い。
0452名無しさん@お腹いっぱい。2010/05/15(土) 22:07:32
>>451
すでに妄想だと認めた(>>438)んだから、お前の負け。www
0453名無しさん@お腹いっぱい。2010/05/15(土) 22:18:20
>>452
よくよめ。

たとえ「妄想」だったとしても、お前のプライドは潰れてる。

実際には「妄想」ではなく事実だから、お前は100%論破されてる。

という、2段階の主張。

とりあえず、お前のプライドが潰れればそれでいいから、
「妄想」でもいいならそのままにしとけ。
たとえ「妄想」でも、「/dev/tcpを知らなかった人」と思われるのは
さぞかし悔しいだろうな。
0454名無しさん@お腹いっぱい。2010/05/16(日) 00:30:52
初歩的な質問でアレですが

foo='/hoge/spa ce.txt'

というようにスペースが含まれるファイルがあったとして、このファイルのbasenameをクォートするにはどうしたらよいのでしょうか?

echo "$(basename $foo)" だと spa になってしまうし、
echo $(basename "$foo") だと spa ce.txt (スペース1つ)となって、やはり spa と ce.txt が別トークンとして扱われてしまいます。
要するにダブルクォートをネストしたいということなのですが…
0455名無しさん@お腹いっぱい。2010/05/16(日) 00:32:54
2chだとスペースが1つにまとめられちゃうんですね。
本当は

foo='/hoge/spa___ce.txt' # _ はスペース

のように、スペースが複数入っていると考えてください
0456名無しさん@お腹いっぱい。2010/05/16(日) 01:29:45
>>453
お前は「妄想」していると明言している。これが100%の証拠って奴だよ。www
その言い訳、惨め過ぎるぞ。www
アク禁らしいから、解除されたらまたからかってやるよ。www
15分以上あるから足りないオツムで必死に考えてろ。www

>>438
> 「妄想」してるのはおそらく俺だけではない。
>
> おまえは「/dev/tcpを知らない人」と「妄想」されてても平気なのかw
> それで十分だ。お前のプライドは潰れたな。
0457名無しさん@お腹いっぱい。2010/05/16(日) 01:36:20
>>454
期待値がわからん。これじゃダメってこと?

$ cat a.sh
#!/bin/sh
foo='/home/spa              ce.txt'
bar=$(basename "$foo")
echo "$bar"

$ sh a.sh
spa              ce.txt

0458名無しさん@お腹いっぱい。2010/05/16(日) 01:53:40
>>457
あ、変数を経由すればいけるんですね!

bar=$(basename "$foo")

ここでも外側にダブルクォートが必要だと思い込んでました。ありがとうございます。
アホな質問してすみません><
0459名無しさん@お腹いっぱい。2010/05/16(日) 09:05:29
>>454 >>458
変数を経由しなくても行ける。

echo "$(basename "$foo")"
0460名無しさん@お腹いっぱい。2010/05/16(日) 09:12:28
>>458
変数に直接代入する場合は外側のダブルクォートは不要。

変数を使わずに直接 echoなどの引数にする場合は、
外側にもダブルクォートが必要(>>459 の方法)

ダブルクォートのネスティングみたいになるけど、
$( ) によって別の階層に分かれてるから、
エスケープとかなしにそのままダブルクォートを付けてOK。

もちろん、複数のスペースとかもそのまま保存される。
0461名無しさん@お腹いっぱい。2010/05/16(日) 09:25:57
>>459-460
なん・・・だと・・・
ネストできるわけないと思ってました。何でも試してみないとだめですね。
これができるんだったら色々楽になりそうです。ありがとうございます!
0462名無しさん@お腹いっぱい。2010/05/17(月) 21:53:46
>>460
へ〜、shのパーザー以外と頭良いな。 勉強になったわ。 bash限定という
事はないかな? 
0463名無しさん@お腹いっぱい。2010/05/17(月) 21:57:03
>>462
bash限定じゃねーよ。

ちなみに、$( ) の代わりに ` ` でもOK。
0464名無しさん@お腹いっぱい。2010/05/17(月) 22:31:26
ちなみにv7shだと…

foo='/home/spa ce.txt'
で no space って言われるんだが、移植ミスなのか?

他の手段で入れれば"`"のネスト自体はできるけど
0465名無しさん@お腹いっぱい。2010/05/26(水) 00:18:56
ちょっと手が滑ってへんな事がおきた。 bashで

$ cd //
$ pwd
//


どういう意味だろう? 3つ以上だと1つになる

$ cd ///
$ pwd
/
0466名無しさん@お腹いっぱい。2010/05/26(水) 01:15:22
//がネットワークルートを表すOSがある。それへの対応コードだろう。
emacsも同様に//を知っている。
0467名無しさん@お腹いっぱい。2010/06/03(木) 23:00:02
初心者です。
キーボードからの入力待ちの際、tab保管を有効にするにはどうしたらよいでしょうか?

#!/bin/csh
set file = $<
echo "ファイルは $file だよ"

上記のようなとき、filec+autolistのような挙動をしてくれることを望んでいます。
今日はじめてcshが駄目な事を知ったので、/bin/shでないことは御容赦ください・・・。

よろしくお願いします。
0468名無しさん@お腹いっぱい。2010/06/03(木) 23:43:52
>>467

#!/bin/bash
read -e file
echo "ファイルは $file だよ"
04694662010/06/04(金) 00:34:58
>>467さん

bashならできるのですね(ググったらdash、zshとかいうのでもおkなのかな)。

人から貰ったcshスクリプトと組み合わせて使うため、
最初はbashスクを使ってasciiファイルに書き出してから、cshスクで読むとかになりそうですが
ゆくゆくは貰ったcshも全部bashに書き換えたいと思います。

ありがとうございました。
04704672010/06/04(金) 00:43:13
$name++

>>468さんでした。
失礼しました。
0471名無しさん@お腹いっぱい。2010/06/04(金) 07:46:38
そこまでcshを嫌う必要はないだろう
簡単なものならcshの方がいい場合もある
0472名無しさん@お腹いっぱい。2010/06/04(金) 10:06:00
>>465
http://tiswww.case.edu/php/chet/bash/FAQ
のE10
0473名無しさん@お腹いっぱい。2010/06/05(土) 01:33:35
質問です。
以下のソースでは入力がhogeかそれ以外の文字列の場合は期待通りに動くんですが、文字列を入力しなかった場合は
line 6: [: =: unary operator expected
とエラーが出ます。これはどうやれば防げますか?

#! /bin/sh

echo "input? "
read i

if [ $i = "hoge" ];
then
 echo "input is 'hoge'"
else
 echo "other"
fi
0474名無しさん@お腹いっぱい。2010/06/05(土) 01:37:47
"$i"
0475名無しさん@お腹いっぱい。2010/06/05(土) 01:51:39
>>474
なんという…ありがとうございます。
0476名無しさん@お腹いっぱい。2010/06/15(火) 23:04:34
1ヶ月の最初の日曜日を表示させるには・・・・・・
なんかいいコマンドありますか?

find /var/www/data -name hoge を毎月1回最初の日曜日に実行して
インデックス作りたいんす
0477名無しさん@お腹いっぱい。2010/06/15(火) 23:16:56
cronで日曜に起動して日付が7以下かどうか調べれば?
逆でもいいけど。
0478名無しさん@お腹いっぱい。2010/06/15(火) 23:32:49
0 0 1-7 * * [ "$(date +%a)" == "Sunday" ] && command -args

こうですか?
0479名無しさん@お腹いっぱい。2010/06/15(火) 23:41:12
>>476
date -d `date +%d`' days ago 1 day next sunday'


>>477
それをやりたくないから質問してるんだろ
0480名無しさん@お腹いっぱい。2010/06/15(火) 23:43:36
>>477 その発想はいいですね、考え付きませんでした
>>479 days ago ですか!date は奥が深いですね

いろいろとありがとうございますたー!
0481名無しさん@お腹いっぱい。2010/06/15(火) 23:49:22
>>476
これじゃだめ?
cal ${month} ${year} | awk '/^ ?[0-9]+{print $1}' | head -1
0482名無しさん@お腹いっぱい。2010/06/15(火) 23:56:07
>>481 ありがd >>479 と at を使って何とかなりますたたた

cal って便利なんだけど awkで整形して使うのは面白い技ですね
みなさんいろいろ技があるんですね、勉強になります

そろそろCも覚えなきゃなぁ
やることいっぱいですorz
0483名無しさん@お腹いっぱい。2010/06/16(水) 00:06:52
>>479
こんな環境もある
% date -d `date +%d`' days ago 1 day next sunday'
usage: date [-jnu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ...
[-f fmt date | [[[[[cc]yy]mm]dd]HH]MM[.ss]] [+format]
%
0484名無しさん@お腹いっぱい。2010/06/16(水) 00:19:06
おお〜 環境依存ですか

>>483 これ空鼠?
0485名無しさん@お腹いっぱい。2010/06/16(水) 00:28:20
>>484
いあ FreeBSD. つか, *BSD 全部だと思う.
つか, GNU 拡張 date じゃないと通らへんちゃう?
0486名無しさん@お腹いっぱい。2010/06/16(水) 00:34:31
days ago なんて知らないと思ったら拡張date だったのですか
うちのCentOSでは動いてしまったので気付かなかったw
あとで会社のFreeBSDで試して見ます(ヲ
0487名無しさん@お腹いっぱい。2010/06/17(木) 03:26:50
FONに入れたOpenWrtからTwitterに投稿したいためだけに
シェルスクリプトでOAuth認証できるクライアントを書いたw
Perlとか入れなくても標準環境にopensslとcurl入れるだけで動くからいいわ
0488名無しさん@お腹いっぱい。2010/06/18(金) 00:25:21
BSDだったら-vの組み合わせで何とか出来そうですね。手元に環境ないから
試せないけど。
0489名無しさん@お腹いっぱい。2010/06/18(金) 18:29:26
これ見てよ↓
http://livedoor.2.blogimg.jp/agomesu/imgs/5/8/58ff257e.jpg
ばらまこうぜ!
0490名無しさん@お腹いっぱい。2010/06/20(日) 04:42:59
ubuntuでifconfig eth0のMACアドレスを":"を"-"に変えてMACアドレスのみ表示したいのですがどのようにすればよいでしょうか?
初歩的な質問で申し訳ありません。
0491名無しさん@お腹いっぱい。2010/06/20(日) 07:14:26
>>490
シェルスクリプト総合@LINUX Part5
http://pc11.2ch.net/test/read.cgi/linux/1238764663/

怒られる前に早く逃げろ
0492名無しさん@お腹いっぱい。2010/06/20(日) 10:03:33
>>490

ifconfig eth0 | sed -n '/.*HWaddr /{s///; s/:/-/gp}'
0493名無しさん@お腹いっぱい。2010/06/20(日) 14:58:13
ありがとうございました。
Linux板で聞くよりこっちで聞く方が早いですね。
0494名無しさん@お腹いっぱい。2010/06/20(日) 23:49:41
> 421 :名無しの報告 :2010/06/18(金) 18:37:13 ID:wsULoapS0
> おいちゃんこれお願い
>
> http://pc12.2ch.net/test/read.cgi/unix/1266642605/489 2010/06/18 18:29:26
>
> 422 :名無しの報告 :2010/06/18(金) 18:39:13 ID:9cXOXF/h0
> >>421
> 100618 危険!!外国人参政権画像マルチポスト報告 3
> http://qb5.2ch.net/test/read.cgi/sec2chd/1276851966/
>
> これだろここに直接持ってくるなよ
>
> 423 :名無しの報告 :2010/06/18(金) 18:39:51 ID:DZt17tze0
> >>421
> 削除人?じゃないならやめなさい
>
> 424 :名無しの報告 :2010/06/18(金) 18:40:07 ID:wsULoapS0
> はーい
> ごめんなさい
0495名無しさん@お腹いっぱい。2010/06/21(月) 21:28:31
2ちゃんに自動的に書き込むようなスクリプトは既出ですか
nc辺りで書こうかと思うのだけど
0496名無しさん@お腹いっぱい。2010/06/21(月) 22:30:52
>>495
根性試しでないならcurlとか使えばいいんじゃね?

0497名無しさん@お腹いっぱい。2010/06/21(月) 22:34:18
やっぱ/dev/tcp(笑)だろ
0498名無しさん@お腹いっぱい。2010/06/21(月) 22:56:57
>>495
Age2ch Part14
http://pc12.2ch.net/test/read.cgi/software/1118219419/
0499名無しさん@お腹いっぱい。2010/06/27(日) 01:04:50
wc -lで行数求める場合って、なんで先頭にタブ(空白かも)が入るんだろうね。
おかげで、-eqで比較しようとしてもちゃんと比較できなかったりして困るんだよね。
0500名無しさん@お腹いっぱい。2010/06/27(日) 01:29:20
>>499
awk '{print $1}' とかで切り出せば余分な空白は無くなる。

0501名無しさん@お腹いっぱい。2010/06/27(日) 01:57:41
$ test ' 0' -eq 0 && echo EQ
EQ
0502名無しさん@お腹いっぱい。2010/06/27(日) 08:45:20
>>499
GNU wc は、wc -l とか wc -c とかの時、余分な行頭スペースは入らない。
0503名無しさん@お腹いっぱい。2010/06/27(日) 09:17:16
>>500
awkなんか使わなくても、
[ `wc -l < file` -eq 123 ]
でいいだろ。
"`wc -l .. `" じゃなくて単に `wc -l ...` にする。

>>501
シェル依存。
$ test ' 0' -eq 0 && echo EQ
test: 0: bad number
0504名無しさん@お腹いっぱい。2010/06/27(日) 18:16:27
初歩的な質問だと思うんですが
bashでテキストファイルで空欄があるところを改行に変換するシェルスクリプトを作りたいんですが
どうすればよいでしょうか?
0505名無しさん@お腹いっぱい。2010/06/27(日) 19:18:38
まず服を脱ぎます
0506名無しさん@お腹いっぱい。2010/06/27(日) 19:26:54
>>504
man tr
0507名無しさん@お腹いっぱい。2010/06/27(日) 19:57:24
#!/bin/bash

man tr < file.txt

ってやってみましたが、動作が変です。
0508名無しさん@お腹いっぱい。2010/06/27(日) 20:23:38
いいから man tr しなよ。
0509名無しさん@お腹いっぱい。2010/06/27(日) 20:25:31
こうですかぁ??

----
#!/bin/bash

いいから man tr < file.txt
----
0510名無しさん@お腹いっぱい。2010/06/27(日) 20:34:58
粘着キチガイ犬はこのスレにも粘着してるのか?
0511名無しさん@お腹いっぱい。2010/06/27(日) 23:28:39
相手すんな。
0512>>4992010/06/29(火) 01:20:15
>>503
thanks.

0513名無しさん@お腹いっぱい。2010/07/27(火) 03:09:25
初歩的なものですみません。

#!/bin/bash
hostname
$hostname = `hostname`
echo $hostname

上記のシェルスクリプトを実行すると
hostnameだけの行はしっかり標準出力にホスト名が表示されるのですが、
$hostname = `hostname`で command not foundと怒られてしまいます。
なぜでしょうか・・・?
0514名無しさん@お腹いっぱい。2010/07/27(火) 03:19:29
すみません・・・。
#!/bin/bash

hostname
hostname = `hostname`
echo $hostname

でした。結果が
=
とだけ表示されてしまいます。標準出力の結果が変数に入っていないのでしょうか
0515名無しさん@お腹いっぱい。2010/07/27(火) 03:23:09
hostname=`hostname`
0516名無しさん@お腹いっぱい。2010/07/27(火) 03:27:38
>>515
ありがとうございます。解決しました。
いろいろやってたら、間違ってhostnameに=を設定してしまっていたことも重なっておりました。
0517名無しさん@お腹いっぱい。2010/07/27(火) 13:02:18
nxt .. g@foo.txt r@ n@bar.txt .
0518名無しさん@お腹いっぱい。2010/07/28(水) 21:03:26
xargsの-Pオプションってありますよね。
マルチコアの上で動かすときに重宝しています。

しかし、例えば
for i in *.jpeg
do
convert $i `basename $i .jpeg`.png
done
のような多少複雑な操作をxargs -Pのような形で簡単に並列実行することはできるでしょうか?
"args"だけでなくてリダイレクトにも使用できることを望んでいます。
# 普段はzsh使ってるので for i in *.jpeg; convert $i $i:r.png とか書いてますが

zargsのような、zshに依存するやり方でも構いません。
ご存知でしたら教えていただければ幸いです。
0519名無しさん@お腹いっぱい。2010/07/28(水) 21:09:45
>>518
単純にバックグラウンドで、

for i in *.jpeg
do
convert $i `basename $i .jpeg`.png &
done
wait

でいいんじゃないの。
それよりスペースや特殊記号入りファイル名の対応の方が気になる。
0520名無しさん@お腹いっぱい。2010/07/28(水) 21:28:09
それってファイルが何千とあったら醜い事にならんか?
0521名無しさん@お腹いっぱい。2010/07/28(水) 21:42:38
>>519-520
ありがとうございます。
変換する元のファイルも基本的に自分で作成するつもりなので、
ファイル名は「行儀のいい」ものと仮定して、スペースや特殊記号は特に意識していませんでした。

その代わり、ファイル数は100?のオーダーを考えているので、
バックグラウンドに全部一気に詰め込むのではなく、
最大並列プロセス数を与えて、その数だけ常に動かしつづけてくれる仕組みが欲しいのです。
0522名無しさん@お腹いっぱい。2010/07/28(水) 21:43:44
>>521
すみません、文字化けしてます。
×ファイル数は100?のオーダー
○、ファイル数は100 - 10000のオーダー
です。
■ このスレッドは過去ログ倉庫に格納されています