- 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あたりに色々と。
- 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とか。
|

|