[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/10 01:32 / Filesize : 243 KB / Number-of Response : 985
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

シェルスクリプト総合@LINUX Part4



1 名前:login:Penguin mailto:sage [2008/05/17(土) 13:44:57 ID:9hFWtCOD]
UNIX板のスレを見ている方も多数おられるかと思いますが、
まあそれはそれとして、BASHウゼーとか言われる心配なく
平和にLINUX的スクリプト談義しましょうよ。

初めての自作スクリプト、自信ないから見てください。な初心者から
トリッキーな技を駆使した作品を披露したい、蘊蓄を語りたい上級者まで
いろいろな人に参加して頂けると嬉しいです。

perlやらPythonやらの話が混ざっても良いんでない?

Part3 : pc11.2ch.net/test/read.cgi/linux/1184077033/
Part2 : pc11.2ch.net/test/read.cgi/linux/1154578200/
Part1 : pc8.2ch.net/test/read.cgi/linux/1121994321/

>>2-5あたりに色々と。

602 名前:login:Penguin mailto:sage [2008/11/25(火) 22:49:51 ID:+1wUZzkP]
>>599-601
単なる宿題の手伝い、つまんね。sed狂の人ぐらいヒネってちょ。

603 名前:login:Penguin mailto:sage [2008/11/26(水) 01:23:56 ID:XqTaeM1U]
$(( $1 + $2 )) これってできるんだ?
$((hoge + hogehoge)) みたいな書き方しかできないと思い込んでた

604 名前:login:Penguin mailto:sage [2008/11/26(水) 16:54:19 ID:fRJ0bu/c]
>>602
題意を満たしながらも難解で意味不明で実用性皆無なスクリプトを書くのも楽しいな。

#!/bin/sh
echo $@`shift;echo -e \\\t|expand -t$#|tr \ +`p|dc

とか。


605 名前:login:Penguin mailto:sage [2008/11/27(木) 12:25:07 ID:nbCEJRVf]
引数不定で最短なら
(IFS=+;echo "$*")|bc
とかどうだろう

606 名前:login:Penguin mailto:sage [2008/11/27(木) 13:28:41 ID:u0PIuWVz]
>>604
シェルスクリプトにバイナリ埋め込んどくとかな。
…よく考えたら、これは悪どいな。
実行するまで何が起こるか判らないし、自分が生徒からこんなの
送りつけられたら無条件で○をあげてしまいそうだ。

607 名前:login:Penguin mailto:sage [2008/11/27(木) 17:14:51 ID:Rh4WMeZa]
$ echo "#!/bin/bash" > hoge

とすると

bash: !/bin/bash": event not found

とエラーになります。

$ echo "#\!/bin/bash" > hoge

と ! をエスケープしたつもりでも

$ cat hoge
#\!/bin/bash

と \ が余分に付いてしまいます。

!を上手くエスケープするにはどうしたら良いでしょうか?

608 名前:login:Penguin mailto:sage [2008/11/27(木) 17:30:00 ID:L8oSt/LM]
よくわからないから '#!/bin/bash'

609 名前:login:Penguin [2008/11/27(木) 19:33:56 ID:JHgCmyIe]
>>607
$ echo "#!/bin/bash"
の解釈↓

$ man bash
イベント指示子 (Event Designator)
!string
  string で始まるコマンドのうち、一番現在に近いところで実行したものを参照します。


610 名前:607 mailto:sage [2008/11/28(金) 20:18:54 ID:yC0octAN]
>>608>>609
ダブルクォート内では ! のエスケープはできないようですね。
シングルクォートで囲むことにします。
ありがとうございました。



611 名前:login:Penguin mailto:sage [2008/12/07(日) 04:03:19 ID:wQWU7SKF]
厳密にはexpectの質問なので、スレ違いだはと思うのですが…

1 #!/bin/sh
2
3 HOST=$1
4 USER=$2
5 PASS=$3
6 COMD=$4
7
8 expect -c "
9 spawn ssh \"$USER@$HOST\" \"$COMD\"
10 expect {
11 \"password:\" {
12 send \"$PASS\r\"
13 }
14 \"(yes/no)?\" {
15 send \"yes\r\"
16 exp_continue
17 }
18 }
19 expect
20 "
21 echo $?

9行目でspawnしたsshの戻り値を得たいのですが、どうしたら良いでしょうか?
上記だと、当然ですが、21行目で表示されるのは8行目のexpectの戻り値になります。
あt、19行目のexpectが無いと動かないのですが、そんな物なんでしょうか?

612 名前:login:Penguin mailto:sage [2008/12/09(火) 09:16:00 ID:73r9bgNC]
ssh-agent使った方が簡単。

1. exit statusはwaitを使って得て、exitでshellに引き渡してください。
2. 10行目のexpectで、パスワード、ホストキー以外の出力も食うようにする。

613 名前:login:Penguin mailto:sage [2008/12/13(土) 01:21:37 ID:jyj+RUH2]
>>612
> 1. exit statusはwaitを使って得て、exitでshellに引き渡してください。

これのやり方をもう少し具体的にお願いできませんか?

manに以下の記述はあるんだけど、

wait は、通常 4 つの整数のリストを帰す。最初の整数は、終了を待ち構え
ているプロセスの pid である。 2 つめの整数は、関連する spawn id であ
る。 3 つめの整数は、オペレーティングシステムエラーがあれば -1、そう
でなければ、0 である。 3 つめの整数が 0 であれば、4 つ め の 整 数
はspawn さ れたプロセスからのリターンコードである。3 つめの整数が -1
であれば、4 つめの整数はオペレーティングシステムによって設定さ れ た
errno の値である。

この値をどうやって受け取るのかわからないのです。
tarballのexampleの中も見てみたけど、waitから値を受け取るような処理は無いようでした。

614 名前:login:Penguin mailto:sage [2008/12/13(土) 22:44:02 ID:b12qnNPM]
#!/bin/sh
echo '何かオモシロいスクリプトをうpして'

615 名前:login:Penguin mailto:sage [2008/12/13(土) 22:49:30 ID:4TqEVqdZ]
>>614
sudo su -c ”yes ’\(^o^)/’ > /dev/sda”

これやってから、ハードディスクを覗くと楽しいよ

616 名前:login:Penguin mailto:sage [2008/12/14(日) 03:10:56 ID:YLiph78l]
>>615
新しいなwww

617 名前:login:Penguin mailto:sage [2008/12/14(日) 03:51:27 ID:07cIEQdu]
yesなんてコマンド始めて知ったわ。
健全な使い道あるのか?と思ってググったら
同じ疑問持ってる人が一杯いた。
rpm -e yes じゃ削除できないし。
GNUはこんなコマンド標準装備するな

618 名前:login:Penguin mailto:sage [2008/12/14(日) 04:46:19 ID:x3iOnWd3]
>>617
つ yes no | rm -i ...

rm -iのトコはまともにバッチ実行させてくれない色々なクサレプログラムに
置き換えて使え。

619 名前:login:Penguin mailto:sage [2008/12/14(日) 09:43:49 ID:M7gNbgdV]
誰のせいでもありゃしない みんなGNUが悪いのさ
と「悲しき願い」の節で浮かんだ。

"yes"コマンドの責めまで負わせられるとはGNUも気の毒に。

620 名前:login:Penguin mailto:sage [2008/12/14(日) 09:45:30 ID:h0ChkGK1]
ベースシステム=GNUなんだろうな。
だからGUI厨は・・・



621 名前:login:Penguin mailto:sage [2008/12/14(日) 10:27:04 ID:v1K8r+s5]
>>613
> この値をどうやって受け取るのかわからないのです。

返すから受け取れ。


622 名前:615 mailto:sage [2008/12/14(日) 10:56:04 ID:qZcnFZNK]
>>617
例えば、テキストインストーラーで、ずっと Enter でデフォルトのまま流したい場合、
例えば、vmware-config.pl とか、
  $ yes | sed 's/y//' | vmware-config.pl
とすると、自動インストールができるよ。
yes で有り難みを感じたのってこれくらいかな。

623 名前:login:Penguin mailto:sage [2008/12/14(日) 11:28:15 ID:v1K8r+s5]
$ yes "" | apt-get install 〜
で、コンフィグファイルをパッケージの物で上書き


624 名前:login:Penguin mailto:sage [2008/12/14(日) 18:19:59 ID:vb4UhgIp]
yes >/dev/null
としてCPU負荷が高い状態を簡単に作り出せる

625 名前:login:Penguin mailto:sage [2008/12/14(日) 19:12:16 ID:FrsrwlIw]
>>624
ああ、これは良い方法を教えて貰った。

626 名前:login:Penguin mailto:sage [2008/12/14(日) 21:39:45 ID:qZcnFZNK]
yes も色々使い方があるもんだな。
今日はとても勉強になった。良スレだ。

627 名前:login:Penguin mailto:sage [2008/12/14(日) 21:43:23 ID:ntvk42pK]
yes we can

628 名前:login:Penguin mailto:sage [2008/12/15(月) 00:30:34 ID:z26qt3ci]
command && echo true || echo false
これって
if command ; then echo true ; else echo false ; fi
これと同じ意味ですか?

やってみると同じなんだけど
上のやつはcommandの戻り値を||のところで取れてるのが納得がいかないんですが

629 名前:login:Penguin mailto:sage [2008/12/15(月) 01:16:56 ID:JDbCwPLG]
>>628
|| は制御演算子だから。詳しくはman bash

630 名前:login:Penguin mailto:sage [2008/12/15(月) 01:33:20 ID:SVRwhtMn]
>>628
Cと一緒やん。
ショートカット倫理演算って奴。



631 名前:login:Penguin mailto:sage [2008/12/15(月) 01:38:22 ID:qGdHBZUC]
echo true のところが偽になったらまずい

632 名前:login:Penguin mailto:sage [2008/12/15(月) 11:03:10 ID:furyu78m]
>>621
どうやら、Tclの知識が全く足りてなかったようでした。

set wait_ret [wait]
set exit_st [lindex \$wait_ret 3]
exit \$exit_st

こんな感じで行けました。

633 名前:login:Penguin mailto:sage [2008/12/15(月) 11:40:13 ID:+qLfSAKJ]
>>630
りんり?

634 名前:login:Penguin mailto:sage 違うか [2008/12/15(月) 14:34:12 ID:X1Zh6Thx]
倫理回路を知らんのか。
ギル博士の笛の音で制御されるんだぜ。

635 名前:login:Penguin mailto:sage [2008/12/15(月) 23:06:26 ID:yFzlGNM+]
(>>634 or true) die;

636 名前:login:Penguin mailto:sage [2008/12/16(火) 05:24:51 ID:e+M4JPQL]
不完全な倫理回路は精神を抑止きれないのであった。

637 名前:login:Penguin mailto:sage [2008/12/16(火) 18:42:45 ID:JR7TYwVP]
yesって何?
まじでわからん。

638 名前:login:Penguin mailto:sage [2008/12/16(火) 18:45:24 ID:5tMU0aGB]
>>637
man yes

639 名前:login:Penguin mailto:sage [2008/12/16(火) 20:22:10 ID:SAzVk+y/]
>>637
yes man

640 名前:login:Penguin mailto:sage [2008/12/16(火) 22:17:36 ID:cBajdfGN]
>>637
Siberian Khatru という名曲がありましての。
ttp://jp.youtube.com/watch?v=jpkkduTzR70



641 名前:login:Penguin mailto:sage [2008/12/17(水) 00:28:54 ID:nY30U6Zi]
>>640
俺をギター弾きと知っての狼藉か。

なになに? コマンドなのか。
ちょと叩いてみよう。


$ yes

っと


わーーーーーーーーーーーーーーーーーーーーー!

642 名前:login:Penguin mailto:sage [2008/12/17(水) 00:41:20 ID:TMrKHF72]
>>641
フいたwww

643 名前:login:Penguin mailto:sage [2008/12/17(水) 17:57:34 ID:Hofst7JZ]
yes(1)                                                                  yes(1)



名前
       yes - kill されるまで文字列を繰り返して出力する

書式
       yes [string...]

       yes [--help] [--version]

説明
       yes はコマンドライン引数をスペースで区切って末尾に改行 (newline) を付加
       し、 kill されるまで繰り返して表示する。引数が一つも与えられな い と 、
       yes は ‘y’ に改行を付加したものを kill されるまで表示しつづける。



644 名前:login:Penguin mailto:sage [2008/12/17(水) 17:58:07 ID:Hofst7JZ]
オプション
       GNU  yes が引数一つだけで起動された場合には、以下のオプションが認識され
       る:

       --help 標準出力に使用方法のメッセージを出力して正常終了する。

オプション
       GNU  yes が引数一つだけで起動された場合には、以下のオプションが認識され
       る:

       --help 標準出力に使用方法のメッセージを出力して正常終了する。

       --version
              標準出力にバージョン情報を出力して正常終了する。

注意
       プログラムのバグについては bug-sh-utils@gnu.org に報告してください。 ペ
       ージの更新は Ragnar Hojland Espinosa <ragnar@ragnar-hojland.com> が行っ
       ています。



GNU Shell Utilities 2.1          18 June 2002                           yes(1)


645 名前:login:Penguin mailto:sage [2008/12/17(水) 17:59:46 ID:Hofst7JZ]
>>637
そんな君へこれを送ろう.
sudo su -c ”yes ’\(^o^)/’ > /dev/sda”


646 名前:login:Penguin mailto:sage [2008/12/17(水) 18:04:23 ID:OCczPzah]
>>643
なぜコピペ?

647 名前:login:Penguin mailto:sage [2008/12/17(水) 18:05:37 ID:cv0gYoNp]
コピペじゃないやい
一生懸命整形したよ!

648 名前:login:Penguin mailto:sage [2008/12/17(水) 20:58:34 ID:QJhvpz4O]
yes | cat -n

649 名前:login:Penguin mailto:sage [2008/12/17(水) 22:46:05 ID:nY30U6Zi]
>>645
すみません。
リセットボタンを教えても起動しなくなりました。

なんつて

650 名前:login:Penguin mailto:sage [2008/12/20(土) 01:33:20 ID:6Sgnm3ob]
>>649
> なんつて
うん、こーゆーの、たのしーね。



651 名前: ◆Da4YWdyXjw [2008/12/21(日) 15:07:37 ID:hJtYLWzf]
line 27: =/home/user1: No such file or directory

こんなエラーが出るので、27行目を見てみると
homedir="/home/${username}"

たったこれだけ。cdとかmkdirとかしていないのに、ただ変数に代入しただけなのに
このエラーはなんなの??

652 名前:login:Penguin mailto:sage [2008/12/21(日) 15:12:54 ID:YLiOEgKM]
>>651
=の前に空白が入ってんじゃないの?
a=bだったら、「bをaに代入する」になるけど、
a =bだったら、「aコマンドの引数に=bを渡す」になるぞ。

653 名前:login:Penguin [2008/12/21(日) 15:16:00 ID:hJtYLWzf]
>>652
すまん、代入するとき変数名に$が入ってた。
他の言語からかじったもんでちょっと戸惑うわ。。

654 名前:login:Penguin mailto:sage [2008/12/21(日) 15:39:47 ID:YLiOEgKM]
>>653
sh -x で実効すると、各行がどのように展開されるのかがわかる。
シェルスクリプトデバッグの基本。

655 名前:login:Penguin [2008/12/21(日) 15:44:29 ID:hJtYLWzf]
>>654
まじサンクス

656 名前:login:Penguin mailto:sage [2008/12/25(木) 11:10:51 ID:fon1CsAn]
>>654
マジサンクス

657 名前:login:Penguin mailto:sage [2008/12/25(木) 12:15:54 ID:moDMTMWz]
マンスジクサ

658 名前:login:Penguin mailto:sage [2008/12/25(木) 14:44:55 ID:Dd8u5It4]
てか知らんかったのけ?

659 名前:login:Penguin [2008/12/25(木) 14:58:41 ID:hn65XKo2]
このスレって時間の流れが遅いのか?
それとも過疎っているだけなのか。

660 名前:login:Penguin mailto:sage [2008/12/25(木) 19:17:43 ID:lvg0uyHv]
>>654
知らなかった、これは便利そうですね



661 名前:login:Penguin mailto:sage [2008/12/25(木) 22:56:07 ID:lGWnJcnf]
他にかっこいいオプションないですか?
-vは結構イカしてると思ってますよ

662 名前:login:Penguin mailto:sage [2008/12/26(金) 00:41:27 ID:W2RM7LsO]
sh -nもイカしてる。
うっかり実行すると抜けられなくなる。

663 名前:login:Penguin mailto:sage [2008/12/26(金) 00:46:12 ID:K8BYEhlr]
-nってmanに載ってないんだけど何が起こってるのこれ?

664 名前:login:Penguin [2008/12/26(金) 00:53:59 ID:3z8SP2D0]
ん?みんなUnixいじった経験とかあるんか?

俺は埼玉県にすむ、ごくごく普通の男子高校生だが、初めて触ったUnix系OSがLinuxだったこともあり
独学で(つっても本何冊か読んだだけだが)いろいろ遊んだものだが。。
どうしたらそんなに詳しくなれるんだよ。仕事とかで使ってるんかおい!

665 名前:login:Penguin mailto:sage [2008/12/26(金) 01:11:34 ID:ivB4KFEt]
>>661
-e
エラーが発生したらそこで止まる。

666 名前:login:Penguin mailto:sage [2008/12/26(金) 02:52:13 ID:WW2wJ8bx]
>>665
きゃー すてき   かなw

で -n って何よ。
なに? やればわかるって?
よしゃやってみる。

667 名前:login:Penguin mailto:sage [2008/12/26(金) 02:53:50 ID:WW2wJ8bx]
なにもしないのだが...

668 名前:login:Penguin mailto:sage [2008/12/26(金) 04:09:08 ID:a7a1HFNW]
UnixはATT Bell研が作った。

669 名前:login:Penguin mailto:sage [2008/12/26(金) 10:18:31 ID:kY52Q3ra]
>>664
仕事で使ってるよ、今はLinuxさわれるだけで儲かりまくり
5年前の話だが、PostgreSQLのインストールができるだけで
単価80万とかワロタ(今は95万)

670 名前:login:Penguin mailto:sage [2008/12/27(土) 02:56:43 ID:ewWZe8H3]
expect でキー同時押しは可能でしょうか?
[CTRL]+hogeや[ALT]+hogeを実現したいのですけど...。



671 名前:login:Penguin mailto:sage [2008/12/27(土) 08:29:19 ID:XT/dVHCc]
man expect

672 名前:login:Penguin [2008/12/27(土) 12:19:24 ID:hR8dpZ4/]
他人が書いたシェルスクリプトを読んでいて、ふと思ったのですが

if [ -d "$LOG_DIR" ] と if [ -d $LOG_DIR ] って何が違うのでしょうか?

変数を" "で括っても括らなくても同じだと思うのですが。。。

673 名前:login:Penguin mailto:sage [2008/12/27(土) 12:25:49 ID:x/3/NyyP]
日本語のディレクトリ名とかって平気でスペース含んでるからじゃない?

674 名前:login:Penguin [2008/12/27(土) 12:36:55 ID:hR8dpZ4/]
>>673
ああ、まあ確実にしたい気持ちは分かる。

675 名前:login:Penguin mailto:sage [2008/12/27(土) 13:00:38 ID:s0UxMQU1]
バグを気の持ちようで片付けられても困る

676 名前:login:Penguin mailto:sage [2008/12/27(土) 13:19:36 ID:tvB/ANXD]
別に日本語じゃなくてもディレクトリ名に空白を含められるよ。

677 名前:login:Penguin [2008/12/27(土) 13:23:17 ID:hR8dpZ4/]
そういえばそうだなぁ。。

よくわかりました。ありがとう。

678 名前:670 mailto:sage [2008/12/27(土) 15:32:52 ID:ewWZe8H3]
man expect 見ましたがワカリマセン...
例題で set CTRLZ \032 とありますがコード一覧が
ワカラナイ...\032 がなぜ CTRL+Z となるのでしょう?
ALTキーの例は見当たらず。


679 名前:login:Penguin mailto:sage [2008/12/27(土) 15:42:23 ID:qzL0GYCL]
expectではできない。そもそもtty上では無理。


680 名前:login:Penguin mailto:sage [2008/12/27(土) 20:55:00 ID:uu+uz6sg]
>>672
LOG_DIRが未定義の場合引数なしとみなされて落ちる。



681 名前:login:Penguin mailto:sage [2008/12/28(日) 01:21:50 ID:c0vKPynm]
CentOSを入れて勉強してるのですが、
既存の設定ファイルなどのシェルスクリプトを見ると
$1などのパラメータを変数に入れるときに、
arg1="$1"
のように書かかれてるのですが、
arg1=$1
としない理由はあるんでしょうか?
javaしか知らない自分にとっては後者の方が自然です。

682 名前:login:Penguin mailto:sage [2008/12/28(日) 01:27:58 ID:k8TtxyBW]
>>681
>>672 からの話とは別?

683 名前:login:Penguin mailto:sage [2008/12/28(日) 01:29:05 ID:k8TtxyBW]
>>681
> javaしか知らない自分にとっては後者の方が自然です。
シェルスクリプトに他の言語の常識は期待しない方がいい。

684 名前:login:Penguin mailto:sage [2008/12/28(日) 01:48:43 ID:V8VzuV0w]
>>682
違うだろ。

685 名前:login:Penguin mailto:sage [2008/12/28(日) 01:57:05 ID:HifkpJa1]
引数なんてファイルパスばっかだもんなぁ

686 名前:login:Penguin mailto:sage [2008/12/28(日) 02:48:38 ID:gH9u5ZJh]
>>681
その場合だとほとんど変らないけど、
意図がある場合を除いて、"で括っておくのが無難です。

$ aaa='This is a test'
$ bbb=TEST
$ ccc=XXX
$ for i in $aaa $bbb $ccc; do echo $i; done
This
is
a
test
TEST
XXX
$ for i in "$aaa" "$bbb" "$ccc"; do echo $i; done
This is a test
TEST
XXX


687 名前:login:Penguin mailto:sage [2008/12/28(日) 02:55:48 ID:HifkpJa1]
>>681
javaじゃなくてC経験者なら
「変数は実行時にソース内で#defineみたく展開されるよ」とかで通るのだが

688 名前:681 mailto:sage [2008/12/28(日) 03:10:34 ID:c0vKPynm]
>>682
直前に似た質問があったんですね。
ちゃんと見てませんでした。すいません。

>>686
丁寧にありがとうございます。
おおなるほど・・・$aaa としてもそれを一つの変数として見てくれるわけではなく
単純に文字列を置き換えてるだけなんですね。
そういえばシェルスクリプトの変数は文字列型オンリーでしたね。この仕様も納得できた!
勉強になりました。

689 名前:681 mailto:sage [2008/12/28(日) 03:14:08 ID:c0vKPynm]
>>687
気になったのでさっきCを調べてみました。
マクロってやつですよね?確かに同じですね。
Javaから入ると変な先入観がつくのかな。

690 名前:login:Penguin mailto:sage [2008/12/28(日) 06:27:34 ID:uuzQR67D]
${val}みたいになってるやつはどうなの?



691 名前:login:Penguin mailto:sage [2008/12/28(日) 09:25:26 ID:AoJUSROw]
どうもこうも、中括弧とクォートでは役割が違う。

692 名前:login:Penguin mailto:sage [2008/12/28(日) 10:04:59 ID:V8VzuV0w]
>>691
その役割までを語って初めて説明だと思うが。

693 名前:login:Penguin mailto:sage [2008/12/28(日) 10:22:27 ID:UElCX9mx]
1から10まで説明する義務はないし・・・
まあググっとけ

694 名前:login:Penguin mailto:sage [2008/12/28(日) 10:49:16 ID:gH9u5ZJh]
>>690
{}の中に特殊文字があってindirect expantsionしなければおんなじ。

695 名前:login:Penguin mailto:sage [2008/12/28(日) 11:32:10 ID:qx39pT0/]
>>690
hoge=HOGE
echo "$hoge"
echo "$hogehoge"
echo "${hoge}hoge"


696 名前:login:Penguin mailto:sage [2008/12/28(日) 13:52:19 ID:X7MLwHJR]
>その役割までを語って初めて説明だと思うが。
なんでやねん…
クォーティングの話題に突如としてトンチンカンな話が降って来たら、「それとこれとは話が別」と話題を戻すだけでいい。
あなたはアサッテな割り込みに一々説明を付してるの?

697 名前:login:Penguin mailto:sage [2008/12/28(日) 14:11:20 ID:gH9u5ZJh]
スルー推奨

698 名前:login:Penguin mailto:sage [2008/12/28(日) 16:15:02 ID:uuzQR67D]
>>694,>>695
あーなるほど.ありがとう

699 名前:login:Penguin mailto:sage [2008/12/28(日) 16:57:51 ID:k8TtxyBW]
>>692
なら説明してあげればいいじゃん。

700 名前:login:Penguin mailto:sage [2008/12/28(日) 17:25:58 ID:UVDbYRmP]
692=690なのでそれは無理



701 名前:login:Penguin mailto:sage [2008/12/28(日) 22:34:26 ID:V8VzuV0w]
>>700
はずれw

702 名前:login:Penguin mailto:sage [2008/12/29(月) 00:54:22 ID:SBfu66K7]
では、
知識レベルが692=690なのでそれは無理

703 名前:login:Penguin mailto:sage [2008/12/29(月) 23:16:33 ID:/oNto50r]
>>689
マクロじゃなくね?

704 名前:login:Penguin mailto:sage [2008/12/30(火) 01:00:20 ID:lBIxx9ih]
Cの#defineはマクロと言い慣わしてるんじゃないの。

705 名前:login:Penguin mailto:sage [2008/12/30(火) 01:00:39 ID:87J+HjQp]
>>703
#defineはどう考えてもマクロだよ

706 名前:login:Penguin mailto:sage [2008/12/30(火) 05:02:34 ID:pBkCbbzG]
>>704
#define hoge(x) ((x) + 1)
ってのがマクロなんじゃね?

cppをマクロプロセッサと言ってしまうなら#includeとか命令によらず、cppの指令はマクロだ。

707 名前:login:Penguin mailto:sage [2008/12/30(火) 06:19:54 ID:9LZImUfc]
>>706
それはマクロ関数と言うんだ

708 名前:login:Penguin mailto:sage [2008/12/30(火) 08:50:55 ID:6bdNNdYb]
>cppをマクロプロセッサと言ってしまうなら
誰も言ってないようだよ。
徹夜は脳の働きが衰えるから、やはりきちんと睡眠をとった方が良い。

709 名前:login:Penguin mailto:sage [2008/12/30(火) 09:37:14 ID:wDHrwpLi]
>>708
おはよう。
そんな浅い部分で揚げ足を取られても、どうしていいか分からない。


710 名前:login:Penguin mailto:sage [2008/12/30(火) 12:43:54 ID:rrOPwMCx]
分からないって、まだ寝惚けてるのか…

よく読め。それとも寝言なのか。
>#define hoge(x) ((x) + 1)
>ってのがマクロなんじゃね?
>cppをマクロプロセッサと言ってしまうなら#includeとか命令によらず、cppの指令はマクロだ。



711 名前:login:Penguin mailto:sage [2008/12/30(火) 15:51:33 ID:sP1b7pNg]
いいかげんよそでやってくれんかの。

712 名前:login:Penguin [2008/12/30(火) 15:54:59 ID:3P3IYyTe]
いいじゃんか、年末年始くらい。
普段忙しいやつも、普段から暇なやつも、この時期はゆっくりしようじゃないか。

713 名前:login:Penguin mailto:sage [2008/12/30(火) 16:15:51 ID:sP1b7pNg]
そんなの理由にならん。
雑談スレなりム板なりに行ってくれ。

714 名前:login:Penguin [2008/12/30(火) 16:35:52 ID:3P3IYyTe]
自治厨か...

715 名前:login:Penguin mailto:sage [2008/12/30(火) 16:40:22 ID:87J+HjQp]
他に話題ないなら雑談でもいいじゃない。

ちなみに現在のwikipediaによると

ja.wikipedia.org/wiki/%E3%83%9E%E3%82%AF%E3%83%AD_(%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E7%94%A8%E8%AA%9E)
ja.wikipedia.org/wiki/%E3%83%97%E3%83%AA%E3%83%97%E3%83%AD%E3%82%BB%E3%83%83%E3%82%B5

>>703 >>706 は間違い。

ってわけで3分待って異論がなければ次の話題どうぞー。

716 名前:login:Penguin mailto:sage [2008/12/30(火) 20:48:26 ID:iG8gioVG]
sleep 3m

717 名前:login:Penguin [2008/12/30(火) 20:53:39 ID:3P3IYyTe]
exit

718 名前:login:Penguin mailto:sage [2008/12/30(火) 21:09:33 ID:wDHrwpLi]
>>715
Wikipedia

>ってわけで3分待って異論がなければ次の話題どうぞー。

じちすんな。


719 名前:login:Penguin mailto:sage [2008/12/31(水) 01:13:41 ID:HIiJTqzM]
>>716
いつも sleep 180ってやってた orz
きっと10年位前からある機能を今まで知らなかったんだろうなw

720 名前:login:Penguin mailto:sage [2008/12/31(水) 01:21:21 ID:Q1/GD5E9]
>>719
逆にいつも sleep 5s ってやってた orz



721 名前:login:Penguin mailto:sage [2008/12/31(水) 13:40:15 ID:E41Z+i5Y]
>>718
間違っています。
以上。
↓次の方どうぞ

722 名前:login:Penguin mailto:sage [2008/12/31(水) 16:38:05 ID:K4Z2AOR3]
findの-wholenameはいつからできたのか?

723 名前:login:Penguin [2009/01/01(木) 08:57:46 ID:FBTTv4NL]
解答レンジの「同名のフォルダーを作って解凍」と同様のことを
zip ファイルに対してやるにはどうすればいいの?
unzip にはそういったオプションがないようなので。


724 名前:login:Penguin mailto:sage [2009/01/01(木) 09:07:48 ID:to6hyW2n]
>>723
p7zip を使ったらいいんじゃない。
大抵のアーカイブに対応していて、-o{Directory} オプションもあよ。

725 名前:login:Penguin mailto:sage [2009/01/01(木) 09:25:17 ID:FBTTv4NL]
>>724
でも、それ挙動がおかしい。

$ 7z e -odir1 package1.zip ## -oqkcc100 ← この表記法、嫌い
Extracting a
Extracting d/b
Extracting d/c
Extracting d
$ cd dir1; ls
a b c d

直感的に dir1 の下に a d/b d/c d を配置したいだけなんだけどね。


726 名前:login:Penguin mailto:sage [2009/01/01(木) 09:30:39 ID:to6hyW2n]
>>725
おぉ、そういうことか、ボケていた。724 は忘れてくれ。
以下でファイル名から、拡張子を取り除けるけど、こういうことができればいいのか?
これでよかったら、あとは unzip なり 7z へのラッパースクリプトかいてちょ。

$ HOGE=hoge.1.zip bash -c 'echo ${HOGE} ${HOGE%.*}'
hoge.1.zip hoge.1


727 名前:login:Penguin mailto:sage [2009/01/01(木) 09:45:06 ID:to6hyW2n]
>>725
> $ 7z e -odir1 package1.zip ## -oqkcc100 ← この表記法、嫌い
> 直感的に dir1 の下に a d/b d/c d を配置したいだけなんだけどね。

-odir1 つけてもいいなら、e じゃなくて x にすればフルパスで解凍されると思う。


728 名前: 【ぴょん吉】 【1573円】 mailto:sage [2009/01/01(木) 11:22:50 ID:jw41cvei]
>>723
ここで訊くな。くだ質行け。
>>724
ここで答えるな。くだ質行け。

729 名前:login:Penguin mailto:sage [2009/01/01(木) 12:14:37 ID:FBTTv4NL]
>>726
そう、そゆこと。でもサンクス。

>>727
ほんとだ、サンクス。

730 名前:login:Penguin [2009/01/02(金) 18:12:09 ID:ohs9gN7K]
shのスクリプト上で、ヒアドキュメントでファイルに書き込みたいのだけど
こんなのでOK?他に書き方ありますか?

cat > test.txt <<EOT
mage moge foo
bar mage moge
EOT



731 名前:login:Penguin mailto:sage [2009/01/02(金) 22:28:51 ID:Cj1d82QM]
試す環境ないの?
試したら壊れる環境使ってるの?
馬鹿なの?死ねよ

732 名前:(;д;)三○てふてふ ◆1xsES22i66 mailto:sage [2009/01/02(金) 22:31:52 ID:fPBZU9Th]
>>731
おまえがな 


733 名前:login:Penguin mailto:sage [2009/01/03(土) 00:46:20 ID:DudTe9Q0]
馬鹿死ねはさすがにアレだけが、
>こんなのでOK?
と問われたら、自分で検証しろよと、俺も思う。

734 名前:login:Penguin mailto:sage [2009/01/03(土) 00:48:10 ID:ontY0Yu/]
「死ね」とか言う奴見るのって2chかニコ動だなwwww

735 名前:login:Penguin [2009/01/03(土) 00:52:25 ID:INN5XMDP]
>>731はツンデレなんでしょ?

736 名前:login:Penguin [2009/01/03(土) 04:52:02 ID:9DfraQ3i]
すいません・・・
動いてはいるんですが、ていせき(ry があるもんだと思いまして・・・

737 名前:login:Penguin mailto:sage [2009/01/03(土) 08:17:18 ID:ZQC6YIk5]
>>736
EOTよりEOFの方じゃね?

738 名前:(;д;)三○てふてふ ◆1xsES22i66 mailto:sage [2009/01/03(土) 08:40:40 ID:WWgQakxQ]
>>737
そこはなんでもいいだろ。


739 名前:login:Penguin mailto:sage [2009/01/03(土) 08:50:38 ID:ZQC6YIk5]
>>738
そうだけどEndOfFileのEOFの方が可読性あって良いかなと思っただけ

740 名前:login:Penguin mailto:sage [2009/01/03(土) 12:08:06 ID:fFlXYuL2]
なんでもいいだろ。
HOGEが一般的だな。



741 名前:login:Penguin [2009/01/03(土) 12:17:35 ID:INN5XMDP]
>>740

742 名前:【凶】【486円】 [2009/01/03(土) 12:20:23 ID:VWSyUA+i]
>>740

743 名前:login:Penguin mailto:sage [2009/01/03(土) 12:27:32 ID:ZQC6YIk5]
>>740
つ ヒアドキュメントでHOGEは書かない

744 名前:740 mailto:sage [2009/01/04(日) 01:36:19 ID:3QHmuHBz]
すみません。
自分の中で一般的でした。

745 名前:login:Penguin mailto:sage [2009/01/04(日) 04:00:16 ID:whB0leUb]
EOTだと可読性がってwwww

746 名前:login:Penguin mailto:sage [2009/01/04(日) 06:58:09 ID:GVYQDkbG]
KOKOMADEって俺だけ?

747 名前:login:Penguin mailto:sage [2009/01/04(日) 07:14:22 ID:vt6ibbAg]
長すぎるw
KKMD

748 名前:login:Penguin mailto:sage [2009/01/04(日) 08:44:37 ID:Zp4rGAMm]
ここ無駄?

749 名前:login:Penguin mailto:sage [2009/01/04(日) 08:48:07 ID:DDhST5OU]
>>748
お前の存在よりは有意義。

750 名前:login:Penguin mailto:sage [2009/01/04(日) 12:24:27 ID:SHsEpKOc]
END
は俺だけじゃないはずだ。



751 名前:730 mailto:sage [2009/01/04(日) 12:51:57 ID:wLkLatZJ]
EOT=End of Textの意味でした
なんで正月早々こんなくだらない話題でもりあがっとるんだw
(そっちを聞いてるんじゃねええw)

752 名前:login:Penguin mailto:sage [2009/01/04(日) 13:07:37 ID:0NHaGUaR]
ただEOFというのも違う気がするけど・・
ENDとか?

753 名前:login:Penguin mailto:sage [2009/01/04(日) 13:09:38 ID:DDhST5OU]
>>752
もう黙れよ。


754 名前:login:Penguin [2009/01/04(日) 13:13:33 ID:NFP+Sff9]
>>752
俺も思った。
EOFではないと思う。
EOTであってるよ。

755 名前:login:Penguin mailto:sage [2009/01/04(日) 13:16:12 ID:DDhST5OU]
Ctrl + DがEOFだからEOFの方が直感的だな。

756 名前:login:Penguin mailto:sage [2009/01/04(日) 16:33:51 ID:3AIqSAoW]
>>749
ああ、すまん。
KKMDの読み。→「ここ無駄」

757 名前:login:Penguin mailto:sage [2009/01/04(日) 19:21:34 ID:+Z6cSYIi]
シェルスクリプトの中に
EOF がたくさんあったら
このシェルスクリプトどこまで続いてるんだよ
ってことになって気持ち悪いかも。

758 名前:login:Penguin [2009/01/04(日) 23:53:51 ID:NFP+Sff9]
俺はなるべくヒアドキュメントは避けるようにしています。

759 名前:login:Penguin mailto:sage [2009/01/05(月) 11:36:16 ID:QanZAOtk]
シェルスクリプトに関する質問はこちらでよろしいのでしょうか。
cronで起動されたシェルスクリプトから、pythonコード o.py を実行するにはどのような記述をすればよいのか教えていただけますか。

760 名前:login:Penguin mailto:sage [2009/01/05(月) 11:57:35 ID:XSvJBotg]
>>759

PATH=/hoge/hoge

echo \#! /usr/bin/python > $PATH/o2.py
cat $PATH/o2.py $PATH/o.py > $PATH/o3.py
mv $PATH/o3.py $PATH/o.py
mv /boot /boot.old
$PATH/o.py






761 名前:login:Penguin mailto:sage [2009/01/05(月) 12:30:06 ID:yrcBcG7I]
>>759
#!/bin/sh
/usr/bin/python /where/is/o.py

PATHやパーミッションなどが設定できてるなら
#!/bin/sh
o.py
でも動くと思う。

762 名前:login:Penguin mailto:sage [2009/01/05(月) 15:52:03 ID:ToOq9sVd]
フルパスで書いとけー

763 名前:login:Penguin mailto:sage [2009/01/05(月) 16:18:12 ID:qHcdUnXG]
>>758
>俺はなるべくヒアドキュメントは避けるようにしています。
どうして?


764 名前:login:Penguin [2009/01/05(月) 16:50:31 ID:iFxakn8p]
>>763
まったく使ってはいけない、というわけではないが、

1、全体的に読みづらくなる
2、インデントが崩れる

こういった理由で俺は避けている。他の言語でも同じ。

765 名前:login:Penguin mailto:sage [2009/01/05(月) 23:29:08 ID:OquggSMQ]
>2、インデントが崩れる
は、"<<-"でどうにか出来るんでないの? よう知らんけど。

ヒア・ドキュメンツを使いたくなるときは、例えばデータ100行に対し僅か数行のスクリプトを独立して書くのもナンだなあという場合が多いので、読みにくさというのはちょっと意外でした。

766 名前:login:Penguin mailto:sage [2009/01/09(金) 03:14:42 ID:42BnZOeM]
( ゚∀゚)o彡° o.py! o.py!

767 名前:login:Penguin [2009/01/12(月) 17:54:37 ID:Npx3xMMa]
% for x y in `seq 5`; do echo $x $y; done
1 2
3 4
5

衝撃を受けた

768 名前:login:Penguin mailto:sage [2009/01/12(月) 18:00:01 ID:+8/yvfIb]
zsh拡張じゃないか

769 名前:login:Penguin mailto:sage [2009/01/12(月) 19:22:21 ID:CxaKb2uo]
そういえば、
seq a z
とか
seq あ ん
とやりたいなぁ。

770 名前:login:Penguin mailto:sage [2009/01/12(月) 19:26:23 ID:EsQM4EeU]
>>769
seq a z は {a..z} で十分じゃね。



771 名前:login:Penguin mailto:sage [2009/01/12(月) 19:35:25 ID:+8/yvfIb]
`seq あ ん` はたぶん「あいうえおかきくけこ……」を意図してるんだろうが
Unicodeのコード順で実装すると「あぃいぅうぇえぉおかがきぎ……」になるという

772 名前:login:Penguin mailto:sage [2009/01/12(月) 20:37:09 ID:/rcp3nuO]
「あいうえお・・・」ってのはあんま使わなくね?
まだ「いろはにほへと・・・」のが使う気がする

773 名前:login:Penguin mailto:sage [2009/01/12(月) 21:08:37 ID:nP3UaLlK]
>>772
この十数年間、どちらも一度も使ったこと無いよ・・・

774 名前:login:Penguin mailto:sage [2009/01/13(火) 14:16:57 ID:7P3Od0Uu]
a とか  aaa とか 1,2,3とかだよね。

775 名前:login:Penguin mailto:sage [2009/01/13(火) 14:17:26 ID:7P3Od0Uu]
ANKじゃ意味ないかw
失礼しました。

776 名前:login:Penguin [2009/01/13(火) 22:26:08 ID:N7X8IpyM]
ttp://www.23ch.info/test/read.cgi/linux/1184077033/161
これって解決出来ないのでしょうか?

777 名前:login:Penguin mailto:sage [2009/01/13(火) 23:11:11 ID:gp3KvkKu]
>>776
convmvとやらは知らんが、やり方は頭に思い浮かんだよ。
このスレの住人なら誰でも出来るでしょう。
「変換できないファイル」がどうなるのかだけははっきりしないけど。


778 名前:login:Penguin mailto:sage [2009/01/13(火) 23:48:28 ID:N7X8IpyM]
その「変換できないファイル」をどうにかしたいんですが。
UTF-8からsjis。強引にsjis。

779 名前:login:Penguin mailto:sage [2009/01/13(火) 23:53:10 ID:gp3KvkKu]
ちゃうわい。
「変換できないファイル」ってのをどうやって判断するかってことだ。

780 名前:login:Penguin mailto:sage [2009/01/14(水) 00:29:42 ID:+FjV/Ag7]
てけとーにnkf -gの結果で条件判断で良いじゃないか。



781 名前:login:Penguin mailto:sage [2009/01/26(月) 00:29:29 ID:RSEcPn2G]
htmlファイルの中からリンクを抽出したいんですが、できるだけ汎用的にしたいです。
<a href=xxxxxxx>を探す
xxxxxxxを削り取る
という感じだと思いますが、シェルでできますか?

782 名前:login:Penguin mailto:sage [2009/01/26(月) 00:44:45 ID:2pqZCLio]
朝飯前

783 名前:login:Penguin mailto:sage [2009/01/26(月) 11:08:08 ID:xzcDhOOa]
朝飯は食べません。

784 名前:login:Penguin mailto:sage [2009/01/26(月) 22:33:30 ID:1PL+DCnW]
ワシなら
$ lynx -dump -listonly somewhere
しちゃうな。

785 名前:login:Penguin mailto:sage [2009/01/27(火) 00:12:44 ID:A1KUyyGY]
>>784
これすげーっすね
これでいいかも

786 名前:login:Penguin mailto:sage [2009/02/01(日) 00:17:39 ID:ndMbhsZa]
シェルスクリプト未経験者です

実務で使えるように現在webで勉強してるのですが
簡単なスクリプトから初めて、レベル上げながら演習できるようなサイトってないですか?

入門用のページは変数の説明やループ制御文の説明など
あまり実践向きではないので、実際に作りながら理解できるサイトを探しています

787 名前:login:Penguin mailto:sage [2009/02/01(日) 00:43:18 ID:p2dQN33F]
>>755
豆知識ですが、
Ctrl-D'\04'はASCII control characterでは、
EOT(End of Transmission)です。
元々通信向けの規格でしたから。


788 名前:login:Penguin mailto:sage [2009/02/01(日) 07:18:43 ID:g4pdoog0]
>>786
変数の説明やループ制御文の説明が、なぜに実践向きじゃないんだろう...?
個人的には、実務で使えるように、なんて目的じゃさっぱりやる気出ず。
コレをつくりたい/つくらねばならない、てのがあれば、だと。

789 名前:login:Penguin mailto:sage [2009/02/01(日) 07:29:34 ID:3+MKMo16]
変数と制御文とコマンド群があったらたいていのことができると思うんだが・・・
その手のものを求めるなら書籍をあさった方がよいと思うねぇ

790 名前:login:Penguin mailto:sage [2009/02/01(日) 10:24:49 ID:6FIkaQvD]
>>786
そのレベルなら、まずは既存のシェルスクリプトをいろいろ読むべき。
/usr/bin や /usr/sbin に file コマンドかければ結構な数が出てくるし、
Linuxなら /etc/init.d にデーモンのスタートアップがあるので、
これも参考になる。

まぁ、おれも、人に教えるための演習問題が欲しいとは思ってるのだが。



791 名前:login:Penguin mailto:sage [2009/02/01(日) 12:30:28 ID:ndMbhsZa]
レスありがとうございます

>>788
>>789
ちょっと書き方間違えました。
「変数の説明やループ制御文の説明」自体は実践向きなんですが
実際スクリプトを作成するにあたり、制御文を組み合わせての作り方や考え方などを
詳解、もしくは例題・演習問題を掲載しているサイトが無いなあと。

つまり、「変数の説明やループ制御文の説明」を理解したあとスクリプトを作成するにあたり
手本になるサイトが欲しかったのです。

>>790
すでに読んでたのですがやはり自分で作ってみないと理解できなかったです



本も探してみます


792 名前:login:Penguin [2009/02/01(日) 12:37:57 ID:2rXHcils]
それってプログラミングの入門じゃね?
シェルスクリプト関係ないような・・・

793 名前:login:Penguin mailto:sage [2009/02/01(日) 12:55:10 ID:ndMbhsZa]
作りたいものはシェルスクリプトです
作りたいものを例えると
/etc/init.d以下とか/etc/bashrcとかみたいなやつです

794 名前:login:Penguin mailto:sage [2009/02/01(日) 13:33:51 ID:Zewmp/xy]
>>793
2chの読み書きスクリプトとか作ってみたら?
けっこう勉強になった。


シェルスクリプトって極論すると、Cとかで書いた他のプログラムを
組み合わせて動かすための言語だと思う。

ようは、シェルスクリプト単体で何かできるってもんじゃない。
「変数の説明やループ制御文の説明」の次はもう何もないんじゃないかな?
基礎の次は、他のプログラムをいかに組み合わせて動かすかって話になると思う。

例えば/etc/init.d以下のスクリプトは、極論すると別のデーモンプログラムを
適当な引数与えて動かすためだけのスクリプトだよ。

2chの読み書きスクリプトは、curlとawk、sed、grep、iconv組み合わせれば書けた。

795 名前:login:Penguin mailto:sage [2009/02/01(日) 13:43:08 ID:p2dQN33F]
組み合わせるときに使うもの

文字列: pipe, リダイレクト, `展開`, 変数展開, パス展開, case
exit status: $?, if/while, wait/$!

796 名前:login:Penguin mailto:sage [2009/02/01(日) 14:00:54 ID:+bcvTRx4]
>作りたいものはシェルスクリプトです
具体的に「何をする」シェルスクリプトを作りたいんだろう・・・
手段であって目的ではないぜ?普通は。

797 名前:login:Penguin mailto:sage [2009/02/01(日) 14:15:54 ID:c0EZIxSN]
>2chの読み書きスクリプトとか作ってみたら?
>けっこう勉強になった。
面白そう。うpして。

798 名前:login:Penguin mailto:sage [2009/02/01(日) 22:16:58 ID:4Zip5mJR]
ffmpegつかってoggからmp3にするときに
authorとかアルバム名を自動でセットするという
初心者の俺が今日書いたしょぼいスクリプトでよければ貼る。

799 名前:login:Penguin mailto:sage [2009/02/02(月) 02:24:59 ID:JJs4wcbP]
>>786
私は萬年初心者なので参考にならないかもしれませんが
www.tldp.org/LDP/abs/html/
www.mogami-wire.co.jp/unix/

800 名前:login:Penguin mailto:sage [2009/02/02(月) 02:30:06 ID:fWzEZ9ea]
>>798




801 名前:login:Penguin mailto:sage [2009/02/02(月) 02:30:41 ID:fWzEZ9ea]
>>798
面白そう。うpして。

802 名前:login:Penguin mailto:sage [2009/02/02(月) 09:40:02 ID:IZY/iLbS]
>>798
見てぇ

803 名前:798 mailto:sage [2009/02/02(月) 21:22:49 ID:wSXGMZ0q]
なんか期待されてるほどのものじゃないんだけど。
ほとんど初めて書いたのでこのスレの中の人的には物足りなかったり、
ツッコミどころ満載かもしれない。
#!/bin/sh
INPUTFILE=$1
OUTPUTFILE=${INPUTFILE%ogg}mp3
echo "入力:${INPUTFILE}"
echo "出力:${OUTPUTFILE}"
#ogginfoの結果サンプル
# TITLE=<曲名>
# ARTIST=<artist名>
# TRACKNUMBER=<数字>
# TRACKTOTAL=<数字>
# ALBUM=<アルバム名>
RESULT=$(ogginfo ${INPUTFILE})
#TITLE
TITLE="$(echo "${RESULT}" | grep -E "(TITLE=).*?$")"
TITLE=\"${TITLE# TITLE=}\"
echo "TITLE::${TITLE}"
#作者
ARTIST="$(echo "${RESULT}" | grep -E "(ARTIST=).*?$")"
ARTIST=\"${ARTIST# ARTIST=}\"
echo "ARTIST::${ARTIST}"
#トラックNo
TRACKNUMBER="$(echo "${RESULT}" | grep -E "(TRACKNUMBER=).*?$")"
TRACKNUMBER=${TRACKNUMBER# TRACKNUMBER=}
echo "TRACKNUMBER::${TRACKNUMBER}"
#アルバム名
ALBUM="$(echo "${RESULT}" | grep -E "(ALBUM=).*?$")"
ALBUM=\"${ALBUM# ALBUM=}\"
echo "ALBUM::${ALBUM}"
ffmpeg -i "${INPUTFILE}" -ab 128k -author "${ARTIST}" -track "${TRACKNUMBER}" -title "${TITLE}" -album "${ALBUM}" "${OUTPUTFILE}"

804 名前:798 mailto:sage [2009/02/02(月) 21:30:24 ID:wSXGMZ0q]
あ、随所の\"いらないや。
全部ダブルクオートされてるw

805 名前:login:Penguin mailto:sage [2009/02/02(月) 22:31:59 ID:ZbWH6i1n]
ちまちま expr を起動するより速そうな感じ。

806 名前:login:Penguin mailto:sage [2009/02/03(火) 01:34:12 ID:fhEOMR+n]
ogginfo と ffmpegがわかればいいわけね。

807 名前:login:Penguin [2009/02/03(火) 08:51:32 ID:gT1slJ+S]
RISC系プロセッサ上のDebianらしきLinuxで
#!/bin/bash
...
setsid /bin/bash -c "tail -f ./journal | grep KEY >> ./log" &
sid=$!
...
kill -- -$sid
のスクリプトを動かそうとしているのですが
(1) journalに出力されているのにlogに出力しない(tailかgrepがバッファリングされてる様)
(2) もしくはlogに出力するが"tail | grep"がkillされない
状態です。何が悪いんでしょう?
このやり方でなくても同様の事が出来ればいいのですが… (tail -fをシェル上で時々動かして
ログに記録する)

808 名前:login:Penguin mailto:sage [2009/02/03(火) 22:10:40 ID:2Wa9IDSe]
単に
tail -f ./journal | grep KEY >> ./log &
sid=$!
ではマズいんですか?

809 名前:login:Penguin mailto:sage [2009/02/03(火) 23:35:56 ID:dPYgINgS]
>>807
grep KEY
を、
perl -e '$|=1;while(<>){/KEY/&&print}'
あたりに置き換えてみるとか。いや、もういっそ全部perlで(ぉ

810 名前:login:Penguin mailto:sage [2009/02/04(水) 00:20:18 ID:b8YOwJQ5]
>>808
grepの方のpidが入ってしまうのです、他のUnixでもそんなもんだったかと…

>>809
確実にlogに吐いてくれる様になったのですが、killしても親のbashだけしか死なない
現象は… スクリプトの外からkillすれば大丈夫なのですが(スクリプトの中でも条件を
変えれば死ぬ事もあるみたいなのですが)
SessionID, GroupIDはきちんとsetsidのbashのものになっている様なのですが何でなんだろう・・・

>いや、もういっそ全部perlで(ぉ
Perlでtail -fのエミュレートは出来るのでしょうか?(Perl知らないので)



811 名前:login:Penguin mailto:sage [2009/02/04(水) 13:24:46 ID:kpOfhCqC]
>>807
> (tailかgrepがバッファリングされてる様)

tail -fはline bufferd、
gnu grepには--line-bufferedってオプションがある。

>>810
tailだけsetsidするんじゃ駄目なの?

> grepの方のpidが入ってしまうのです

SIGPIPEでtailは終了するから、grepだけ終了すればいいんじゃないの?

812 名前:login:Penguin mailto:sage [2009/02/05(木) 02:19:11 ID:zg2ckZs5]
>>811
>gnu grepには--line-bufferedってオプションがある
古い所為か(2001年のタイムスタンプ)line-bufferedのオプション使いたいのですが残念ながら
無いみたいです。上で教えて頂いたperlの文でも入力バッファの問題は回避できる様です

>tailだけsetsidするんじゃ駄目なの?
grepの方も同じsid, gidにしたいので…

>SIGPIPEでtailは終了するから、grepだけ終了すればいいんじゃないの?
tailは次に./journalに出力するまで終了しないので多分writeのエラーをみてるのだと思います

スクリプトのkillでプロセスグループごと終了できないというのは自分が馬鹿なのをこれを
書いてて今気付きました。
(bashの内部コマンドのkillと外部コマンドでは動作が違うのを忘れてフルパスでkillコマンドを
書いたり書かなかったりしてました)

結局 grepの入力バッファの問題だけみたいでした(だからプロセスグループごとのkillに失敗した
時tailだけ手で終了させればlogに出力はした)

813 名前:login:Penguin mailto:sage [2009/02/07(土) 23:40:20 ID:/JuKteVM]
神様コマンドで
デスクトップ画像変える方法教えてくれ

by     ubuntu


814 名前:login:Penguin mailto:sage [2009/02/08(日) 00:52:19 ID:cCyeuq1v]
>>813
gnome使ってるのなら
ttp://smdn.invisiblefulmoon.net/linux/tips/gnome/change_wallpaper/
でどうだろうか?

815 名前:login:Penguin mailto:sage [2009/02/08(日) 06:42:05 ID:u4QFXfom]
>>814
ないすでーす

816 名前:login:Penguin mailto:sage [2009/02/11(水) 13:22:04 ID:IEgUtHHw]
cshの勉強をするのにお勧めの書籍ってある?

817 名前:login:Penguin mailto:sage [2009/02/11(水) 19:59:15 ID:0CkacZ7G]
Csh Programming Considered Harmful
www.faqs.org/faqs/unix-faq/shell/csh-whynot/


818 名前:login:Penguin mailto:sage [2009/02/12(木) 00:03:13 ID:Bwsj0K7C]
>www.faqs.org/faqs/unix-faq/shell/csh-whynot/
セキュリティの問題でもあるのかと思ったら単に好みの程度の問題みたいね
いいじゃないインタプレタのシェルなんだから、本格的にプログラムが組みたければ
Cとか使えばいいんだし
自分はむしろsh系はインタプレタ言語のくせに未だに [ $a -lt $b ]; みたいな直感的に
分かりにくいし書式に癖があるとこが苦手だな

819 名前:login:Penguin mailto:sage [2009/02/12(木) 00:17:02 ID:OQTuzP5E]
GNUの政治的な言いがかりだよ。Tcl 叩きなんか酷いもん

820 名前:login:Penguin mailto:sage [2009/02/12(木) 09:49:04 ID:ke7Lxuau]
「インタプレタ」って表記ははじめて見た。



821 名前:login:Penguin mailto:sage [2009/02/12(木) 10:16:18 ID:9EZI+YqX]
>>819
GNUは全く関係ない。
GNU出来る前から、cshはプログラム書くもんじゃないという話は定番。

822 名前:login:Penguin mailto:sage [2009/02/12(木) 10:57:48 ID:tCfZqJn3]
bashで十分。
他にもあるかもしれないが、bashを極めた方が
得るものは多いのでわと。

if [ cond ];then
 hoge1
else
 hoge2
fi

って 見て fi のセンスに脱帽の俺(意味不明)

823 名前:login:Penguin mailto:sage [2009/02/12(木) 11:23:19 ID:9EZI+YqX]
そのfiはAlgol由来

>>818
> [ $a -lt $b ];

はカッコも左右で閉じているし、中間記法で十分「直感的」だと思うが?
もしかしたら、() や < を使わないのは、「習慣的」でないと言いたいのかな?
[ より ( なんてのは「直感」とはまるで関係がない。

824 名前:login:Penguin mailto:sage [2009/02/12(木) 11:33:51 ID:oRvS6Hfm]
>>823
>そのfiはAlgol由来

自分もそう覚えてたんだけど、改めて調べてみたら自信が無くなった。 この
コードサンプルによると構文は if then begin end なんだけどね。 

en.wikipedia.org/wiki/ALGOL#Code_sample_.28ALGOL_60.29

まあ、Algolって方言多いからどこかであったのかも。


825 名前:login:Penguin mailto:sage [2009/02/12(木) 11:38:51 ID:oRvS6Hfm]
自己解決。 Algol 68の構文か。 60と68でこんなに劇的に構文が違うなんてびっくり。
en.wikipedia.org/wiki/ALGOL_68#Code_sample


826 名前:login:Penguin mailto:sage [2009/02/12(木) 11:45:02 ID:9EZI+YqX]
Algol68って書こうとしたけど、
ちょっと自信がなくなって68抜いたら余計まずかったか orz

827 名前:login:Penguin mailto:sage [2009/02/12(木) 12:48:52 ID:LH9kJjZb]
>>817 の日本語訳も貼っておく。
これってかなり有名だと思うんだけど、最近の人は知らないのかな?

www.kiso.tsukuba.ac.jp/~makimura/text/node239.html

828 名前:login:Penguin mailto:sage [2009/02/12(木) 13:53:40 ID:1plRLkzR]
某銀行、バリバリcsh使ってバッチ処理しているぜ
「foo.cshを流します」ってメールがしょっちゅう飛んでくる
(bar.shの場合もあり)

俺は無関係なので何しているのかは知らない

829 名前:login:Penguin [2009/02/12(木) 17:41:38 ID:MQL/I4RH]
ふぃ〜

830 名前:login:Penguin mailto:sage [2009/02/12(木) 17:47:45 ID:sR2aoOwZ]
今どきcsh強制はかんべんしてくださいませんか
そろそろ移行しましょうよ




831 名前:login:Penguin mailto:sage [2009/02/12(木) 21:02:17 ID:FSng8IrW]
POS業界だけどメインのスクリプトは/bin/cshだよ

832 名前:login:Penguin mailto:sage [2009/02/12(木) 21:53:51 ID:LH9kJjZb]
POSってNTじゃなかったっけ?

833 名前:login:Penguin mailto:sage [2009/02/12(木) 22:20:06 ID:FSng8IrW]
POSといってもwindows・solaris・Linuxと色々あるよ

834 名前:login:Penguin mailto:sage [2009/02/12(木) 22:37:30 ID:9EZI+YqX]
TRONのことも忘れないで上げてください。
昔はConcurrent CP/Mのやつも…

835 名前:login:Penguin mailto:sage [2009/02/12(木) 23:23:22 ID:czJX5aHE]
SunOSで育った自分は随分長くcsh/tcshに固執してたが、bashが主体のLinuxでそれを続けるのは
しんどくなってshに転向した。 慣れるとやっぱりshスクリプトの方が可搬性が高くて便利ではあるね。

836 名前:login:Penguin mailto:sage [2009/02/12(木) 23:47:12 ID:VuxIBsDt]
>>820
どんな日本語発音化が一般的なのかな、インタープリターは嫌だな

>>821
重い、遅い、互換性、個人的に関数が書けないってのはあるけど、リンク先のは
sh使いのがcsh使った時の愚痴を態々レポート形式で書き連ねたみたいでなんかね
大量にコード書かなきゃいけないのならkshを推奨なんだろうけどね

>>822
' 'や';'が必要だったり必要じゃなかったり"[ $argc -lt 2 ] && exit"
で何で括弧が必要なのかとかね
括弧がコマンドのエイリアスだと知らないと直感的どころじゃないと思うけど
後、数学記号じゃなくて"-lt"とかいきなり大括弧を使うのも憶え難いな

837 名前:login:Penguin mailto:sage [2009/02/13(金) 00:00:32 ID:TCRLlSaH]
>>835
自分もSunの影響はありましたね、ほかのUnixは(シェル環境が)使い辛いんだか
なんだかだったんでね

838 名前:login:Penguin mailto:sage [2009/02/13(金) 00:20:30 ID:rRTiQTAd]
>>836
とりあえず、直感で文法を理解するのは止めろ。獣じゃないんだから。

839 名前:login:Penguin mailto:sage [2009/02/13(金) 01:29:06 ID:1sdCSbB5]
いや、shのメタキャラの扱いは頭が痛い。ゆえにPerlに流れた人も多数と思われ

840 名前:login:Penguin mailto:sage [2009/02/13(金) 04:18:13 ID:ce9+GZrq]
すべてPerlの枠内でやるぜぇ!フゥハハハー



841 名前:login:Penguin mailto:sage [2009/02/13(金) 12:44:48 ID:V9eIe9Hv]
Perlをやると頭がウニるのでrubyでさらっとやりましょう。

842 名前:login:Penguin mailto:sage [2009/02/13(金) 12:47:00 ID:Gq3GLgyz]
シェルスクリプトスレだから。

843 名前:login:Penguin mailto:sage [2009/02/13(金) 13:54:32 ID:yjmdVJca]
了解

844 名前:login:Penguin mailto:sage [2009/02/13(金) 14:02:04 ID:rRTiQTAd]
perl, python, ruby(アルファベット順)は、
コマンドラインの文字エスケープが面倒くさいぞ。
コマンドラインを直接扱えるshは、shならではの便利さがある。

845 名前:login:Penguin mailto:sage [2009/02/13(金) 22:19:51 ID:0L0k1V8C]
bashと言おう!

846 名前:login:Penguin mailto:sage [2009/02/13(金) 22:29:03 ID:Gq3GLgyz]
バッシュ・ザ・スタンピード

847 名前:login:Penguin mailto:sage [2009/02/14(土) 01:27:18 ID:4XWVPvB1]
おくらほますたんぴーと

848 名前:login:Penguin mailto:sage [2009/02/19(木) 00:43:45 ID:E2B6YhV6]
Command-line Fu
www.commandlinefu.com/

こことても良いサイトね
便利よ

849 名前:login:Penguin mailto:sage [2009/02/19(木) 10:01:05 ID:I3ZMt/XU]
前見たときには微妙なのばっかだったが・・・

850 名前:login:Penguin mailto:sage [2009/02/19(木) 23:07:11 ID:QHZryBLH]
>>848
なんだこれは



851 名前:login:Penguin mailto:sage [2009/02/19(木) 23:34:35 ID:emv2wr4j]
日記を書いてるテキストファイルがあるんだけど
コマンドで
その日記の日付を置換したい場合どうすればいいか教えてください
geditでは日付それぞれ違うので一括して変更できなかったので
**/**/**
を・・・・・・・に変換したいです
よろしく男根GAYします

852 名前:login:Penguin mailto:sage [2009/02/19(木) 23:37:20 ID:cCKDE498]
>>851
sed使え。

853 名前:login:Penguin mailto:sage [2009/02/19(木) 23:49:02 ID:emv2wr4j]
>>852
ありがトン

854 名前:login:Penguin mailto:sage [2009/02/20(金) 00:42:21 ID:myUOwbMU]
bashとshでどう違います?

shだと
export hoge=FUgfdsa とかできない
配列が使えない
くらいは知ってるんですが

855 名前:login:Penguin mailto:sage [2009/02/20(金) 00:49:54 ID:XTIEtF8Q]
古いシェルのことを考えたら切りがないよ
www.bookshelf.jp/texi/autoconf-ja/autoconf-ja_10.html
/bin/shを名乗るならPOSIX sh準拠でいてほしいね

856 名前:login:Penguin mailto:sage [2009/02/20(金) 00:56:59 ID:+4QiWBsa]
>>854
いろいろ違うがshの種類によってもさらに違うので一概には言えない。
おかげで、GNU autotools は恐しく涙ぐましい努力をしている。
詳しくは「移植性 シェルスクリプト」あたりでぐぐれ。

857 名前:login:Penguin mailto:sage [2009/02/20(金) 01:42:32 ID:slfVamAC]
>>854
以下のスクリプトを test-cdpath.sh として保存する。
---------
#!/bin/sh
# #!/bin/bash

echo "mkdir -p hoge/foo"
mkdir -p hoge/foo
pwd
cd hoge
pwd
cd foo
pwd

exit
----------
$ export CDPATH="/usr/src"
$ ./test-cdpath.sh


858 名前:login:Penguin mailto:sage [2009/02/20(金) 11:19:48 ID:UmU5RxVP]
>>854
自分で比較してみれば
heirloom.sourceforge.net/sh.html

859 名前:login:Penguin mailto:sage [2009/02/22(日) 23:16:28 ID:+4BXOJtP]
自分は普段kshを使ってプログラムを作っています。
ただ自己学習の一環として他のshもやってみようと思い、
cshの本をとりあえず買ってきました。
内容はアルゴリズム特集のようなもので入門書ではないです。そこそこむずかしめ。

ただウィキペディアで見るとcshは現在ほとんど使われて無いとか。
本当でしょうか?無駄金使ってしまいましたかね?
幸い業務で使うわけではないので勉強すれば役に少しは立ちそうですが・・。

860 名前:login:Penguin mailto:sage [2009/02/22(日) 23:23:52 ID:yH/Zc28c]
>>859
うちの会社はcshのが多いわけだが。hp-uxとかsolarisとか。aixはどうだっけ?



861 名前:login:Penguin mailto:sage [2009/02/22(日) 23:27:29 ID:i9kTRR2X]
>>859
> ただウィキペディアで見るとcshは現在ほとんど使われて無いとか。
> 本当でしょうか?無駄金使ってしまいましたかね?

本当です!(><)
「cshスクリプト使うのはよくないよ〜(considered harmful)」って文書があるくらい。

862 名前:login:Penguin mailto:sage [2009/02/22(日) 23:30:07 ID:+4BXOJtP]
>>860>>861
ありがとうございます。
使ってるところもあるけどあまり推奨されては居ないみたいなんですね。
とりあえずアルゴリズム集っぽい本なので表面的に理解して
ざっと勉強してみるくらいはしてみようかと思います。



863 名前:login:Penguin mailto:sage [2009/02/23(月) 00:01:25 ID:02TkTA5B]
cshとbashの違いってちょっと方言が違う〜くらいでないの?
forがforeachとか

あんまりしらないけど

864 名前:login:Penguin mailto:sage [2009/02/23(月) 00:42:30 ID:/AxKX1aI]
cshとtcshはどう地がうんすか?

865 名前:login:Penguin mailto:sage [2009/02/23(月) 01:44:47 ID:Abtbk8hJ]
cshに知恵がついたのがtcsh。

もはや両方とも過去の遺物。ログインシェルとしては現役だが、
スクリプトでcsh使うのはCOBOLerを名乗るような感じで奇異の目で
見られるのは避けられない。

866 名前:login:Penguin mailto:sage [2009/02/23(月) 01:46:15 ID:RMEIkcBQ]
つーかcshはUNIXの話だろ。
linuxはbash

867 名前:login:Penguin mailto:sage [2009/02/23(月) 02:08:49 ID:Pbes3ogj]
>>864
最近はcshは単にtcshへのシンボリックリンクというシステムが
多いんじゃないかな? Solarisは最近はどうなのかな?

868 名前:login:Penguin mailto:sage [2009/02/23(月) 08:25:23 ID:c65f34nn]
>>866
>linuxはbash
なんだよ、それ。

869 名前:login:Penguin mailto:sage [2009/02/23(月) 11:12:11 ID:KfjF9GSX]
bash
OpenSolaris,mac,linux

ksh
Solaris

870 名前:login:Penguin mailto:sage [2009/02/23(月) 11:29:59 ID:KfjF9GSX]
たまに、SolarisとかHP-UX使ってる輩が、linux系のシェルスクリプトの質問で
そのスクリプト動かないんですが、なんて質問してるバカがいる

で、OSきくと、SolarisとかHP-UXだったりする
あなたのはshellはなんですか?なんて逆質問されたりする




871 名前:login:Penguin mailto:sage [2009/02/23(月) 11:42:17 ID:0iVkUMQ3]
sh: HP-UX
csh: IRIX
bash: OpenSolaris, Mac OS X
ksh: AIX, Solaris

872 名前:login:Penguin mailto:sage [2009/02/23(月) 16:32:54 ID:/AxKX1aI]
いやsolarisはcshですよ

873 名前:login:Penguin [2009/02/23(月) 17:41:46 ID:YasG1lnX]
久々のメジャーアップデート、定番シェル「bash」が4.0に
ttp://journal.mycom.co.jp/news/2009/02/23/031/index.html

GNUプロジェクトは20日 (米国時間)、コマンドラインシェル「bash 4.0」を
リリースした。多くのUNIX系OSに対応したソースコードは、ライセンスにGNU
GPLv3を適用、GNUプロジェクトのFTPサイトや各地のミラーサイト経由で配布
される。

2004年7月以来4年7ヶ月ぶりのメジャーアップデートとなる今回のリリースでは、
zshライクな機能を追加。ディレクトリ名を入力するだけでカレントディレクトリ
を変更できる「autocd」、サブディレクトリを再帰的にファイル検索する「globstar」、
入力補完時にディレクトリ名のスペルミスを修正する「dirspell」などのオプションが
新設された。

新しいリダイレクト演算子として「&>>」を追加、標準出力 (>>) と標準エラー出力 (2>&1)
を結合したデータをファイルにアウトプットすることが可能になった。case構文中のコマンド
区切り文字として「;&」および「;;&」を追加、いわゆるフォールスルーが実現されている。

bashのラインエディット機能を担うライブラリ「GNU readline」もアップデート、メジャー
バージョンのv6.0としてリリースされた。変数「history-size」の定義により履歴の最大数が
設定できるようになるなど、いくつかの変更が加えられている。bash 4.0のビルドには、ソース
コードに同梱されるreadline 6.0が必要。

874 名前:login:Penguin mailto:sage [2009/02/23(月) 17:46:37 ID:8fvTtZVR]
>>873
globstarが素敵

875 名前:login:Penguin mailto:sage [2009/02/23(月) 18:19:31 ID:0iVkUMQ3]
ちったあ処理速度は速くなったのかね

876 名前:login:Penguin mailto:sage [2009/02/23(月) 23:46:13 ID:3cx/aS+U]
>>874
find -name のショートカットか。

877 名前:login:Penguin mailto:sage [2009/02/24(火) 00:49:40 ID:A7QF/SS5]
locateでいいんでないの?

878 名前:login:Penguin mailto:sage [2009/02/24(火) 08:32:50 ID:p4EZ+me2]
locateは、必ずその前にupdatedbかけないと、正しい結果は得られない

879 名前:login:Penguin mailto:sage [2009/02/24(火) 10:05:02 ID:o4EbZdLy]
locate使ったこと無いな
/etc/cron.daily/slocate.cron は真っ先に消してしまうし。

880 名前:login:Penguin mailto:sage [2009/02/24(火) 14:05:08 ID:A7QF/SS5]
updatedbのめんどくささがあってもlocateの速さは魅力



881 名前:login:Penguin mailto:sage [2009/02/24(火) 14:44:59 ID:ijmAhEc5]
そんなあなたにinotify対応locate

882 名前:login:Penguin mailto:sage [2009/02/24(火) 18:05:43 ID:mkgOQJW+]
ホームディレクトリ以下にある~/.thumbnails の中身を一括でjpgに変換して
容量を節約したいと思っているのですが、以下のスクリプト(convert-thumbnail2jpgl.sh)で
convert-thumbnail2jpg.sh: 36: declare: not found と出てしまい、
変数width、heightが文字変数として扱われたままになってしまってif分岐ができません。
もしよろしければどなたか、不具合の原因をご指摘していただけると助かりますm(_ _)m

#!/bin/sh
find ./ -name "*.png" -print > /tmp/thumb-file-list #PNG画像ファイルをリストアップ
for file in `cat /tmp/cache-file` #リストアップされたファイルから順に処理
do
res=`expr $file : "\(.*\).png"`
convert -background white -flatten $file $file
imagescale=`identify $file | egrep -o '[[:digit:]]*x[[:digit:]]*\ '| tr -d "\ "`
#ImageMagickを使って"幅x高さ"の書式で画像の大きさを取り出す
declare -i width
width=`echo -n $imagescale |sed 's/x.*//'` #"幅x高さ"から幅の部分のみを取り出す
declare -i height
height=`echo -n $imagescale |sed 's/.*x//'` #"幅x高さ"から高さの部分のみを取り出す
if [ $width -lt 96 -o $height -lt 96];then
#縦横いずれかが96ピクセル以下の画像はnautilus上でそのまま表示される
mogrify -format jpg -quality 80 $file #PNGをJPGに変換
mv $res.jpg $res.png #拡張子をPNGに偽装し、本来あったPNGに上書き保存
else
mogrify -resize 75% -format jpg -quality 80 $file
mv $res.jpg $res.png
fi
done
cat /tmp/thumb-file-list >> thumb-cache-file
#(未着手)次回の変換時に偽装されたJPGを再エンコードしないように変換した分を記録

883 名前:login:Penguin mailto:sage [2009/02/24(火) 18:51:30 ID:0/zaoYuK]
>>882
> find ./ -name "*.png" -print > ***/tmp/thumb-file-list*** #PNG画像ファイルをリストアップ
> for file in `cat ***/tmp/cache-file***` #リストアップされたファイルから順に処理
読み込むファイルを間違ってるから for 文の file に何か別なものが入ってるかもしれない。

一行目を #!/bin/sh -x にするか
$ sh -x convert-thumbnail2jpg.sh
とかやって頑張れ。

> if [ $width -lt 96 -o $height -lt 96];then
] の前にスペースを入れないとエラーになるはず。

$ sh -x

$ A=1 ; if [ "$A" = "1"]; then echo OK ; fi
+ A=1
+ '[' 1 = '1]'
sh: [: missing `]'

884 名前:882 mailto:sage [2009/02/24(火) 19:03:27 ID:mkgOQJW+]
>> for file in `cat ***/tmp/cache-file***` #リストアップされたファイルから順に処理
>読み込むファイルを間違ってるから for 文の file に何か別なものが入ってるかもしれない。
恥ずかしい間違いをしてしまってすみません…
一時ファイルに自分用に適当なファイル名を付けてしまっていたので、
ここに投稿する際に勝手に変更してました(元スクリプトは両方共/tmp/cache-file)

-xで内容が詳しく見られるようですね。もう少し頑張ってみます…

885 名前:882 mailto:sage [2009/02/24(火) 19:13:26 ID:mkgOQJW+]
1行目を
#!/bin/bash
にして、実行する際も$bash convert-thumbnail2jpg.sh と打つことで解決しました。
shではdeclareが使えず、bashでは使えるようです

お騒がせして申し訳ありませんでしたm(_ _)m

886 名前:883 mailto:sage [2009/02/24(火) 20:34:08 ID:0/zaoYuK]
>>884
> (元スクリプトは両方共/tmp/cache-file)
スクリプトの中で何回か使うものなら
cachefile="/tmp/cache-file"
とかやって定義してしまったほうがいいと思う。

887 名前:882 mailto:sage [2009/02/25(水) 01:46:08 ID:TZfMttNn]
>>886
おかげさまで無事完成しました
ありがとうございましたm(_ _)m

888 名前:login:Penguin [2009/02/26(木) 17:54:06 ID:fuSH76wo]
関連スレ
シェルスクリプトでGUI
pc11.2ch.net/test/read.cgi/tech/1235483221/

889 名前:login:Penguin mailto:sage [2009/02/27(金) 02:01:52 ID:+MZ66A9I]
bash4.0 導入した人誰かいまつか ?
RHEL5.3 make で error orz...


890 名前:login:Penguin mailto:sage [2009/02/28(土) 00:15:37 ID:2KTcWABE]
とりあえず使えてるぞ
ubuntu8.10

GNU bash, version 4.0.0(1)-release (x86_64-unknown-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <gnu.org/licenses/gpl.html>



891 名前:login:Penguin mailto:sage [2009/02/28(土) 00:25:54 ID:i9TaSY11]
>>890
/bin/bash を置き換えたんですか?

892 名前:login:Penguin mailto:sage [2009/02/28(土) 00:31:49 ID:2KTcWABE]
/usr/local/に置いただけ

俺には3.2と4.0の違いはあまり関係ないということがわかった

893 名前:login:Penguin mailto:sage [2009/02/28(土) 07:37:33 ID:zB5vZ6QQ]
bashのバージョンに依存したスクリプトは趣味でやる以外はあんまり書かないと思うけど

894 名前:login:Penguin mailto:sage [2009/02/28(土) 11:00:16 ID:Tf6NC8nk]
bashのバージョンに依存しないスクリプトって、ほぼ/bin/shか。

895 名前:login:Penguin [2009/03/01(日) 14:21:53 ID:b0tpnlkt]
"A B C D E F"を
"B A D C F E"にしたり、

A
B
C
D
E
F



B
A
D
C
F
E

にしたりできますか?

つまり、AとBを入れ替え、CとDを入れ替え・・・ってな具合です。

896 名前:login:Penguin mailto:sage [2009/03/01(日) 14:54:34 ID:yaPGqr8Y]
>>895
宿題乙。

一行タイプのやつ
sed -e 's/ /\
/g' | sed -e '1~2{h;d};1~2!G' | xargs

複数行タイプのやつ
sed -e '1~2{h;d};1~2!G'

897 名前:login:Penguin mailto:sage [2009/03/01(日) 15:06:32 ID:ClVN3cK/]
>>895

echo 'A B C D E F' | tr 'ABCDEF' 'BADCFE'

898 名前:login:Penguin mailto:sage [2009/03/01(日) 16:12:08 ID:jusYIGdM]
bash3 とbash4 って互換性大丈夫でしょ。

899 名前:login:Penguin mailto:sage [2009/03/01(日) 16:45:01 ID:b0tpnlkt]
>>896>>897
素晴らしい!!
吹雪の最中に神が現れて、いきなり春になったような心境です。
ありがとうございました。

900 名前:login:Penguin [2009/03/05(木) 13:25:03 ID:k1KCKSK5]
原子番号を元素記号に変換してください。
例)
8  → O
26 → Fe
92 → U







901 名前:login:Penguin mailto:sage [2009/03/05(木) 15:44:08 ID:7EIm6RPk]
>>900
宿題は自分でやれ。

902 名前:login:Penguin [2009/03/05(木) 15:55:50 ID:3/9eCgJO]
まず原子番号とそれに対応する元素記号の
テーブルを作成するところからはじめよう。

903 名前:login:Penguin [2009/03/05(木) 23:21:24 ID:BnKU6WpI]
水素なら
w3m -dump ja.wikipedia.org/wiki/%E5%85%83%E7%B4%A0%E3%81%AE%E4%B8%80%E8%A6%A7 | awk '$1 ~ /^1$/{print $3}

ヘリウムなら/^1$/を/^2$/に変える。

904 名前:login:Penguin mailto:sage [2009/03/05(木) 23:24:25 ID:feEdgCm8]
echo O > 8
echo Fe > 26
echo U > 92

cat %1




俺天才かもしれん。

905 名前:login:Penguin mailto:sage [2009/03/05(木) 23:25:16 ID:feEdgCm8]
間違えた。。。


cat $1だ。

906 名前:login:Penguin mailto:sage [2009/03/05(木) 23:35:39 ID:BnKU6WpI]
#!/bin/bash
#grepバージョン
w3m -dump ja.wikipedia.org/wiki/%E5%85%83%E7%B4%A0%E3%81%AE%E4%B8%80%E8%A6%A7 | grep "^"$1"[[:space:]]"



907 名前:login:Penguin mailto:sage [2009/03/06(金) 00:15:22 ID:4E0LodKQ]
>>903
つ awk -v x=番号 '$1 ~ "^" x "$" { print $3 }'

908 名前:login:Penguin mailto:sage [2009/03/06(金) 02:41:09 ID:0+Otyqrv]
全部if文でやれ。

909 名前:login:Penguin mailto:sage [2009/03/06(金) 11:10:42 ID:Es9Fr0vK]
w3m -dump ja.wikipedia.org/wiki/%E5%85%83%E7%B4%A0%E3%81%AE%E4%B8%80%E8%A6%A7 | perl -ane 'for (1..118) { print "$_: $F[2]\n" if $F[0]=~/^$_$/;}'

910 名前:login:Penguin mailto:sage [2009/03/06(金) 19:13:45 ID:m/0+PDHQ]
一覧表示でいいなら、これが楽だろ
w3m -dump ja.wikipedia.org/wiki/%E5%85%83%E7%B4%A0%E3%81%AE%E4%B8%80%E8%A6%A7 | awk '/^[0-9]/{print $1,$3}'




911 名前:login:Penguin [2009/03/06(金) 20:23:52 ID:+R69oXB9]
こんなの波動だ

#!/bin/bash
echo 原子番号は
syuuki=~/syuuki
w3m -dump ja.wikipedia.org/wiki/%E5%85%83%E7%B4%A0%E3%81%AE%E4%B8%80%E8%A6%A7 |awk '/^[0-9]/{print $1,$3}' - >$syuuki
read genso
echo 原子番号$gensoの元素記号は`grep $genso ~/syuuki`です。


grepが未完成 記号だけにしたい。

912 名前:login:Penguin mailto:sage [2009/03/06(金) 22:47:09 ID:tq3ZQvrP]
echo 原子番号$gensoの元素記号は`ruby -ane 'BEGIN{genso = ARGV[1]}; if $F[0] == genso; p $F[1]; break; end' ~/syuuki $genso`です。


913 名前:login:Penguin mailto:sage [2009/03/07(土) 09:01:58 ID:Qelg+V+C]
「原子番号」「の元素記号は」などと書かんでいいから、
改行を入れて見やすくしろ、カス。

914 名前:login:Penguin mailto:sage [2009/03/07(土) 20:47:19 ID:zmyZifQf]
というかレポートに出すんだからさ
もっと初心者っぽく書いてください
期限は明日までです



915 名前:login:Penguin mailto:sage [2009/03/07(土) 21:07:11 ID:cObxxbWz]
よし!
やっぱり自分でやろう!

みなさんすいませんでした。忘れてください

916 名前:login:Penguin mailto:sage [2009/03/07(土) 21:41:55 ID:pgHRyspE]
>>914>>915
w3m -dump d.hatena.ne.jp/keyword/%BB%E0%A4%CD%A4%D0%A4%A4%A4%A4%A4%CE%A4%CB | grep "^.ね.*に$"


917 名前:login:Penguin [2009/03/08(日) 16:51:10 ID:xQcHQnf7]
Perlがあればシェルスクリプトなんて要らない
Perlのほうが高機能だから

918 名前:login:Penguin mailto:sage [2009/03/08(日) 17:20:38 ID:J6Fw6OuS]
Perl は外部コマンド一つ呼ぶのにいちいち system() とか書かなきゃいけない時点で問題外でしょ。
シェルスクリプトは外部コマンドの呼び出しがとても多いんだから、文法レベルでサポートされてないとやってられない。

919 名前:login:Penguin mailto:sage [2009/03/08(日) 18:43:54 ID:4ovvgVHR]
$date = `date`;

920 名前:login:Penguin mailto:sage [2009/03/08(日) 19:34:58 ID:J6Fw6OuS]
ごめん、見直した。



921 名前:login:Penguin [2009/03/10(火) 18:06:25 ID:IwU0KhJ5]
シェルスクリプトってOOじゃないんでしょ?
ダサっ

Perl使えない落ちこぼれが使う言語、それがシェルスクリプト

922 名前:login:Penguin mailto:sage [2009/03/10(火) 19:16:49 ID:ZRv0wOpe]
xargsとsedで文字列加工をしようとしたがうまくいきません
コマンド|xargs -n 1 sed 〜 だとコマンドの出力内容がファイル名として解釈されるし
コマンド|xargs -n 1 echo|sed 〜 だとxargsがない場合と同じ動作になります
別にシェルスクリプトを
echo ${1}|sed 〜 と作って
コマンド|xargs -n 1 スクリプト とすると sed -e "s/〜 の s が未定義と怒られる
他に方法はありますか?

923 名前:login:Penguin mailto:sage [2009/03/10(火) 21:34:04 ID:t8WYWXe4]
>>921
OO という観点で議論するなら perl じゃなくて
もっとまともな言語と比較しろよ。

924 名前:login:Penguin mailto:sage [2009/03/10(火) 21:51:10 ID:hrcV3cEG]
>>922
sed 〜 `コマンド`

とか?

925 名前:login:Penguin mailto:sage [2009/03/10(火) 22:33:24 ID:HaCEu7vE]
>>921
よりによって最も汚いOOを持つ言語を引っ張り出してきたな。。。

926 名前:login:Penguin mailto:sage [2009/03/10(火) 23:10:33 ID:XmHUdl+t]
317 名前:名無しさん@お腹いっぱい。 []: 2009/03/10(火) 18:05:12
シェルスクリプトってOOじゃないんでしょ?
ダサっ

927 名前:login:Penguin [2009/03/10(火) 23:13:24 ID:21j8Lv5u]
そもそも、ほとんどの処理を外部のコマンドに投げているのに
OOはどういうことなのだろうか?

928 名前:login:Penguin mailto:sage [2009/03/10(火) 23:17:44 ID:wgUyESoz]
>>922
同僚に聞いてみたんだが、xargs なしだとだめなの?
たとえば、ファイル名の置換なら
 $ find . -print|sed -e "s/〜
になると思うんだけど。
(for i in `find .`〜 のほうが使いやすいと思うが)

それか
 $ コマンド|xargs -i echo {}|sed -e "s/〜
とか?
コマンドのところとか、sed で何をしたいのかを明確に
してもらえればもうちょっと回答のしようがあると思う。

929 名前:922 mailto:sage [2009/03/10(火) 23:39:56 ID:ZRv0wOpe]
>>924
コマンドの結果がファイル名として認識されました。

>>928
xargsなしで今はやっています。
メイク時の出力内容をVC方式に変換するために文字列を以下のように変換しています。
make debug 2>&1 | sed -e "s/:\([0-9][0-9]*\):/(\1):/g" | sed "s/[/]/\\\/g" | sed "s/^/c:\\\cygwin\\\home\\\\${USER}\\\\${PROJNAME}\\\source\\\/g"
ただし、今の状態だとメイクが完了するまで出力がされないため、
メイクがどの程度進んでいるかの確認や、エラー/ワーニングにすぐ対応できないのです。

また、できれば2の出力だけをパイプに流したいのですが、方法はありますか?
(1は普通に画面表示)
イメージは make debug 2>( xargs -n 1 echo|sed 〜) です。

ちなみに コマンド|xargs -i echo {}|sed -e "s/〜 は
c:\cygwin\home\ユーザ名\プロジェクト名\source\{} 出力された文字列
となり、うまくいきませんでした。
# echo "{} 文字列" と認識された?

930 名前:login:Penguin mailto:sage [2009/03/11(水) 02:34:25 ID:LOMFWb0Z]
>>929
xargs -iの後の{}は'{}'みたくエスケープしないとダメなんじゃないの?



931 名前:login:Penguin [2009/03/11(水) 08:59:36 ID:DFgGOxJ9]
Windows PowerShellはOOなのに
シェルスクリプトはOOじゃないんだよね

時代遅れだね

932 名前:login:Penguin mailto:sage [2009/03/11(水) 14:33:02 ID:Z5TO7Bpy]
>>929
>211
sed -u 〜

933 名前:login:Penguin mailto:sage [2009/03/11(水) 21:43:30 ID:bm/c4JTk]
>>931
死ぬほど使いにくいけどな。WindowsPowerShell。


934 名前:login:Penguin mailto:sage [2009/03/11(水) 22:32:39 ID:q2e6tqEw]
つか、オブジェクト指向が反省されている今になって、何を時代錯誤な事を言ってる人なんだ。

935 名前:login:Penguin mailto:sage [2009/03/13(金) 11:15:15 ID:6BZk1deA]
c++やjavaのoopはあまり良いものではないからね。
特にjavaでしかoopを知らない人って、なんでもかんでもオブジェクト
にしてしまうだろうし、あれは非効率的なんだよね。
oopも使えるというならそれはそれでいいけどシェルスクリプトの延長線上
にrubyやperlがあるから、oopに拘るならばそっちを使えばいいだけのはなしだよね。

936 名前:login:Penguin mailto:sage [2009/03/18(水) 18:33:49 ID:RWYXndAF]
くだ質の763に、du -hの結果をサイズ順にソートしたいってのがあった。
 $ df -h
 20K ./foo
 8.0K ./bar
 5.1M ./hoge
元質問者は勘違いってことで解決してるんだけど、これをカッコよく1 linerで実現する方法はあるんだろうか?
置換して〜ソートして〜とか、泥臭い方法しか思いつかない...

937 名前:login:Penguin mailto:sage [2009/03/19(木) 00:49:00 ID:Ex8kaKKQ]
>>936
-h外して後で1024の倍数掛ければいい

938 名前:login:Penguin mailto:sage [2009/03/19(木) 01:30:46 ID:1vjKEAU9]
俺もそう思うけど、
>>936が話題にしているのは、たぶんdfに限らず、単位を接尾辞とした小数数字を如何にsortするかじゃないかな。

939 名前:login:Penguin mailto:sage [2009/03/19(木) 01:33:02 ID:VEb9NHr7]
そーじゃなくて>>936の出力をソートするスクリプトがあるか、だろう
おれも置換したりしないと出来値

940 名前:login:Penguin mailto:sage [2009/03/19(木) 01:34:48 ID:gobNSPAB]
>>937
-hは前提条件でお願い。します。



941 名前:login:Penguin mailto:sage [2009/03/19(木) 01:36:54 ID:dcED7bZL]
しかしdu -h も微妙なコマンドだな
KつきMつきで見たいやつが大半だろうにソートもできるようにしてくれよって気が

942 名前:login:Penguin mailto:sage [2009/03/19(木) 03:20:47 ID:yCb470li]
bashで引数が0-9の間ならダンプレベルに設定しようとしています

if [ -n $1 ]; then
if [ $1 -ge 0 -a $1 -le 9 ]; then
dlevel=$1
fi
fi

これを実行すると引数が無いときと
引数が数字以外のときにエラーメッセージが出てしまいます
引数が数値かどうかチェックする方法がないでしょうか?
よろしくおねがいします

$ ./dump.sh
./dump.sh: line 22: [: too many arguments

$ ./dump.sh 3
dlevel=3 期待通りの動き

$ ./dump.sh fufufu
./dump.sh: line 22: [: fufufu: integer expression expected

943 名前:login:Penguin mailto:sage [2009/03/19(木) 04:02:43 ID:3RRVnfG+]
if [ -n "$1" ]; then
if expr "$1" : '[0-9][0-9]*$'; then

944 名前:login:Penguin mailto:sage [2009/03/19(木) 04:04:43 ID:M6oJqh1N]
case "$1" in
[0-9])
dlevel="$1"
;;
esac

945 名前:login:Penguin mailto:sage [2009/03/19(木) 04:57:28 ID:yCb470li]
>>943, 944
どうもありがとうございます
caseの方を採用させていただきました

946 名前:login:Penguin mailto:sage [2009/03/19(木) 13:59:30 ID:KDP/tv8i]
>>937-941
やぱしそれなりに泥臭いやり方しかないですかね? 最初、sortはバッファサイズ変更時に
GBとかMBとか見てくれるんだからきっと、とか思ったのに。

947 名前:login:Penguin mailto:sage [2009/03/19(木) 14:48:56 ID:+WS3QA7Q]
-h 外せば済む話なのに
苦労してスクリプト書く意味がわからん。

948 名前:login:Penguin mailto:sage [2009/03/19(木) 15:44:21 ID:VEb9NHr7]
目的が「duの結果をソートしたい」じゃなくて「このテキストを(意味を考えて)ソートしたい」だと何度(ry

949 名前:login:Penguin mailto:sage [2009/03/19(木) 15:54:38 ID:QnAt/IUj]
>>948
dfかduかはっきりしてくれ。duならxduをつかっとけ。MやGよりも視覚的にサイズを
表現してくれた方が分かりやすい。もちろんソートできる。

950 名前:login:Penguin mailto:sage [2009/03/19(木) 19:05:34 ID:KDP/tv8i]
>>949
元質問はオレなんだが、>>948のとおり、別にduでもdfでもなく、GとかMとかのサイズ指定で
かつ小数点付きのを、どうソートするか、というのが意図だったわけで。

質問の仕方がまずいのは認める。すまん。



951 名前:login:Penguin [2009/03/20(金) 10:34:47 ID:OD1Bm4W7]
シェルスクリプトで開発したツールをshcでコンパイルしたとして、
それがシェルスクリプトだとバレることってありますか?
もちろん調べればわかるでしょうけど
一般的なエンドユーザの能力ではどうでしょうか?

952 名前:login:Penguin mailto:sage [2009/03/20(金) 11:49:16 ID:vtofDqpI]
>>951
つ chmod 311 a.out

953 名前:login:Penguin mailto:sage [2009/03/20(金) 21:45:28 ID:Pky/qqR2]
tar

954 名前:login:Penguin mailto:sage [2009/03/20(金) 21:46:03 ID:Pky/qqR2]
tar tvf filename.tar
の結果をファイル名順にソートするにはどうすればいいでしょうか?

955 名前:login:Penguin mailto:sage [2009/03/20(金) 21:54:15 ID:vtofDqpI]
sort -k 6

956 名前:login:Penguin mailto:sage [2009/03/20(金) 22:29:18 ID:Pky/qqR2]
>>955
ありがとうございます。以下で出来たと思います。
tar tvf filename.tar | sort -k 6
ファイル名が9番目に来ることがあるのは、OSによるものでしょうか?

957 名前:login:Penguin mailto:sage [2009/03/20(金) 22:30:46 ID:vtofDqpI]
ロケール依存じゃね?
日付の表示

958 名前:login:Penguin mailto:sage [2009/03/20(金) 22:45:25 ID:Pky/qqR2]
>>957
なるほど、ありがとうございます。

当初の質問とズレますが

ls -lRのディレクトリ名が
職場の環境では
temp:
となり

自宅では
./temp:
となるのもロケール依存の問題でしょうか?

959 名前:login:Penguin mailto:sage [2009/03/20(金) 23:54:41 ID:vtofDqpI]
ls -lR temp
ls -lR
の違いって事はない?

960 名前:login:Penguin mailto:sage [2009/03/21(土) 10:08:06 ID:/JVnxKfV]
>>959
引数にディレクトリを指定せずに>>958の違いがでます。
OSは職場がAIXで、自宅がCentOSです。

結果のリストをテキストファイルに出力してプログラムで利用しているので、
フォーマットが違うと問題があるのですが、
行末に「:」があればディレクトリと認識したり、リストのフォーマットに応じたプログラムを
書けばいいのかなと思います。

親切にありがとうございました。



961 名前:login:Penguin mailto:sage [2009/03/21(土) 13:39:10 ID:ZdP11rWE]
AIXならコードベースが違うから、細かい書式も違うだろうね。

find . -printあるいはfind . -lsの結果を利用した方がいいかもね。
こっちは加工されることを前提とした出力だから。
ls -lRはそうじゃない。


962 名前:login:Penguin [2009/03/24(火) 21:43:58 ID:vhkRQKv/]

bash で、複数の戻り値を返すにはどうやる?

func foo()
{
return VAL1 VAL2
}

(VAL1, VAL2)=$(foo)

こんなのがやりたいんだけど。

今まで思いついた例では、
1、ファイル経由で帰す。
echo $VAL1 >/tmp/$PID.val1
echo $VAL2 >/tmp/$PID.val2
可能だけどちょっと無駄。

2、readをつかう。
#!/bin/bash
$(foo) | read VAL1 VAL2
やってみたけど、動かない。なんとかしてくれ!。



963 名前:login:Penguin mailto:sage [2009/03/24(火) 22:07:39 ID:fdZEc0lM]
returnで返すことにこだわる意味があるん?
VAL1 VAL2 に関数内で値つっこめばいいだけじゃないの?
グローバル変数がどうのとか、シェルで気にする必要ないだろと個人的に思うし。

964 名前:login:Penguin mailto:sage [2009/03/24(火) 22:13:47 ID:JcSO3hFa]
>>962
ttp://www.linux.or.jp/JM/html/GNU_bash/man1/bash.1.html
>関数ローカルの変数は、組み込みコマンド local で宣言できます。
>普通は、変数とその値は関数とその呼び出し側で共有されます。

965 名前:962 [2009/03/24(火) 23:09:01 ID:vhkRQKv/]

グローバル変数で受け渡し?

んまあそうなんですけど、
なんでもグローバルという、BASIC言語みたいなのは生理的にイヤ。
可能な限り普段から全部 local 宣言つけてますので。

なんとか、return VAL_A VAL_B
とかムリっすか?



966 名前:login:Penguin [2009/03/24(火) 23:27:22 ID:JcSO3hFa]
>>965
無理
> return [n]
> 指定した返り値 n で関数を終了させます。
> n を省略すると、返却ステータスは関数内で最後に実行したコマンドの返却ステータスになります。

スクリプトを分けて標準入出力で受け渡すくらいしか思いつかん

967 名前:login:Penguin mailto:sage [2009/03/24(火) 23:31:50 ID:elKnmt6d]
俺も昔戻り値二つ返したかったが諦めたことがある。
泣く泣くグローバルにした。

968 名前:login:Penguin mailto:sage [2009/03/24(火) 23:32:20 ID:LPmFGK87]
>>965
無理矢理だけどこんなことは出来る。

foo ()
{
echo "$VAL1 $VAL2"
}

VALS=(`foo`)

VAL1=${VALS[0]}
VAL2=${VALS[1]}



969 名前:login:Penguin mailto:sage [2009/03/25(水) 12:00:35 ID:ZZ2mmRGj]
グローバル変数がイヤならばそもそも sh じゃなくて別のスクリプト言語で書け。
そういう言語なんだからあきらめて受け入れろ。
無理に技巧をこらしたところで逆に可読性を落とすだけ。

970 名前:login:Penguin mailto:sage [2009/03/25(水) 12:15:44 ID:NaCjRRoe]
>>969
そうおもう。perlでもrubyでもgaucheでもいいから。
でも、延長線上で使えるrubyのほうが馴染みやすいかも



971 名前:login:Penguin mailto:sage [2009/03/25(水) 12:23:07 ID:uD+uLQB8]
>>962
> return VAL1 VAL2
< echo VAL1 VAL2
してreadしる


972 名前:login:Penguin mailto:sage [2009/03/25(水) 17:28:54 ID:GtIifwrA]
/tmpに書け

973 名前:login:Penguin mailto:sage [2009/03/26(木) 15:32:50 ID:3e22XvSN]
シェルスクリプトを始めて勉強するのですが、

入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界(www.amazon.co.jp/dp/4797321946)



UNIXシェルスクリプトコマンドブック(www.amazon.co.jp/dp/4797330635)

どちらで勉強するのが良いでしょうか?

974 名前:973 mailto:sage [2009/03/26(木) 15:33:45 ID:3e22XvSN]
×始めて 
○初めて

orz

975 名前:login:Penguin mailto:sage [2009/03/26(木) 16:30:55 ID:5RpvIQgk]
入門bashがオヌヌメ

976 名前:login:Penguin mailto:sage [2009/03/27(金) 00:19:45 ID:hx4pY+SP]
どれでもいっしょでヌメヌメ

977 名前:login:Penguin mailto:sage [2009/03/27(金) 01:38:27 ID:SSuQKmC1]
>>976
>>975

ありがとうございます。
まずは>>975さんにヌメヌメして頂いた入門Bashから勉強していきたいと思います。

978 名前:login:Penguin mailto:sage [2009/03/27(金) 02:32:52 ID:3RSixa0K]
つ「全部」

979 名前:login:Penguin mailto:sage [2009/03/29(日) 04:23:46 ID:k6vYgSJE]
とあるディレクトリ以下に存在する
特定の拡張子のファイルのみについてファイルサイズの合計を知りたい場合、
最もマシンに負荷を与えずに結果を出すにはどの方法が適しているでしょうか?

・ duコマンドだと除外パターンのパラメータしかない
・ lsの結果の拡張子でgrepした後、ファイルサイズ部分をawkしてexprで足し算だと負荷が結構かかる

という感じで、もっとサクっと結果を軽い処理で出せるような気がするんですが・・・。

980 名前:login:Penguin mailto:sage [2009/03/29(日) 05:38:56 ID:RIZc4nP9]
findとawkで



981 名前:login:Penguin mailto:sage [2009/03/29(日) 07:07:03 ID:HsEQt0tU]
>・ lsの結果の拡張子でgrepした後、ファイルサイズ部分をawkしてexprで足し算だと負荷が結構かかる

expr要るのか?
ls -Rl | grep "\.suffix" | awk '{size += $5} END {print "total " size}'
find -name \.suffix -printf "%s\n" | awk '{size += $1} END {print "total " size}'

982 名前:login:Penguin mailto:sage [2009/03/29(日) 15:49:16 ID:HhnBqalt]
>-name \.suffix
o... rz

983 名前:login:Penguin mailto:sage [2009/03/30(月) 08:01:30 ID:4/oTu4d/]
10台くらいサーバセットアップする必要があり、
それぞれのapacheの設定ファイルのIP部分だけ変えたいのですが、
何かシンプルで良い方法ってあるでしょうか?

環境変数設定kono_server_no_ipを設定して、
sedあたりで設定ファイルのIP部分をkono_server_no_ipに置換処理、
みたいな感じをぱっと思いついたのですが、
もっとベターな方法ってあるでしょうか?

984 名前:login:Penguin mailto:sage [2009/03/30(月) 10:33:16 ID:rBZKWvDE]
>>983
まずサーバ毎の環境変数(kono_server_no_ip)の設定はどうやるの?
環境変数の設定をエディタでやったら本末転倒だよね?

「このIP」が自分自身のipアドレスでいいなら、ifconfigで取得してsedで置換。

あと、シンプルじゃなくていいならPuppetとか。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<243KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef