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


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

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



1 名前:1様 [2009/04/03(金) 22:17:43 ID:0qFlvOW9]
UNIX板のスレを見ている方も多数おられるかと思いますが、
まあそれはそれとして、BASHウゼーとか言われる心配なく
平和にLINUX的スクリプト談義しましょうよ。

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

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

Part4 : pc11.2ch.net/test/read.cgi/linux/1210999497/
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あたりに色々と。

818 名前:login:Penguin mailto:sage [2010/04/22(木) 23:27:27 ID:eajRO0wt]
commandA > file
commandB > file

{ commandA; commandB; } > file

はどっちの方がいいの?
後者の場合は、シェルによってはサブシェルが起動するって聞いたけど本当貝。

819 名前:login:Penguin mailto:sage [2010/04/22(木) 23:48:35 ID:sUoTjkov]
>>818
上意味違うだろ。

820 名前:login:Penguin mailto:sage [2010/04/22(木) 23:52:47 ID:eajRO0wt]
間違えた!
前者は

commandA > file
commandB >> file

821 名前:login:Penguin mailto:sage [2010/04/23(金) 00:01:08 ID:sUoTjkov]
正直、目くそ鼻くそじゃね?


822 名前:login:Penguin mailto:sage [2010/04/23(金) 00:03:10 ID:4U7Ovp/A]
そう?
じゃあ気にしないでいいか。

823 名前:login:Penguin mailto:sage [2010/04/23(金) 00:10:54 ID:Odx5g+6A]
悩んでるうちに書いて実行した方が仕事は早く終わるだろ。

824 名前:login:Penguin mailto:sage [2010/04/23(金) 05:48:09 ID:0SL93pt/]
>>818
後者のほうが効率いい

825 名前:login:Penguin mailto:sage [2010/04/24(土) 12:19:07 ID:uV1EwGDC]
>>824
スクリプトの一文が長すぎる。
パイプラインもメンドイ。

826 名前:login:Penguin mailto:sage [2010/04/24(土) 22:06:24 ID:F/lhQSxk]
>>818
前者の場合、commandAの出力はどうなるのかな?w



827 名前:login:Penguin mailto:sage [2010/04/24(土) 22:21:58 ID:loCBys/t]

大丈夫かな、この人・・・

828 名前:login:Penguin mailto:sage [2010/04/24(土) 22:57:54 ID:XH+rWnSs]
笑っとけ笑っとけ。

829 名前:login:Penguin mailto:sage [2010/04/24(土) 23:02:02 ID:/2NBYvX3]
>>826
修正してるじゃないか、 >>820

830 名前:login:Penguin mailto:sage [2010/04/24(土) 23:03:08 ID:loCBys/t]
恥ずかしいね

831 名前:login:Penguin mailto:sage [2010/04/24(土) 23:51:55 ID:ra/w56Dm]
>>825
あれで長いって、普段どんなスクリプト書いてんだ?

832 名前:login:Penguin mailto:sage [2010/04/25(日) 09:35:32 ID:iXPvNLwg]
>>831
いや、引数が100個とかになってきたら。

潰しが利かない。

833 名前:login:Penguin mailto:sage [2010/04/25(日) 09:37:17 ID:pW61wlqY]
意味不明

834 名前:login:Penguin mailto:sage [2010/04/25(日) 09:39:20 ID:iXPvNLwg]
>>833
脊髄じゃなく、脳で考えてください。

835 名前:login:Penguin mailto:sage [2010/04/25(日) 10:09:49 ID:ZtdJByaw]
その価値のある文章を頼む。

引数とはどの部分の引数なのか?
潰しが利かないという主張の根拠は?

836 名前:login:Penguin mailto:sage [2010/04/25(日) 10:39:21 ID:MLqGsd45]
これ以上この話を続けても有益な情報は得られないと思う。



837 名前:login:Penguin mailto:sage [2010/04/25(日) 11:27:46 ID:iXPvNLwg]
>>818
commandA > file
commandB >> file

{ commandA; commandB; } > file

コマンドが100個になったのでwhileで省力化したい。

上の方
rm -f file 2>/dev/null

while read cmd;do
$cmd >> file
done < cmds.txt


下の方
xargsを使えば出来そうだけど{}が内部コマンドなのが気になる。
1行のコマンドラインの文字数制限があるシェルもある。
ので、汎用性が無い。



838 名前:login:Penguin mailto:sage [2010/04/25(日) 11:34:27 ID:iXPvNLwg]
制御構造の使えないシェルスクリプトなんて、バッチファイルの如く、無価値である。

839 名前:login:Penguin mailto:sage [2010/04/25(日) 11:37:39 ID:GR3waYM0]
>>837
よくわかんねえけど
そのcmd.txtって、事実上シェルスクリプトだよな

単に
sh cmd.txt >file
でいいんじゃねえの

840 名前:login:Penguin mailto:sage [2010/04/25(日) 11:46:22 ID:gQNuPSjh]
wwww

841 名前:login:Penguin mailto:sage [2010/04/25(日) 11:49:42 ID:iXPvNLwg]
>>839
そだな。それが最適解だ。

842 名前:login:Penguin mailto:sage [2010/04/27(火) 22:06:55 ID:HNWNlh/r]
for((i=0; i<6; i++)){
array=("${array[@]}" "i")
}

echo "${array[@]}"

これを実行すると下記のように出力されます。
0 1 2 3 4 5

カンマ区切りで下記のように出力する方法ありますか?
0, 1, 2, 3, 4, 5


843 名前:login:Penguin mailto:sage [2010/04/27(火) 23:08:31 ID:3UTvz9hd]
>>842
最後の出力を実現するのなら seq -s ', ' 0 5 で済むけど、
配列の各要素を任意の区切文字で繋げて出力する方法を知りたいということかな

zsh/ksh なら echo ${(j:, :)array} でできるけど、bash でどうなのかは知らない

844 名前:login:Penguin mailto:sage [2010/04/27(火) 23:18:40 ID:HNWNlh/r]
>>843
説明不足で申し訳ないです。

配列の各要素をカンマ区切りで出力する方法です。

・訂正します
array=(1 2 a b 3 c )
echo "${array[@]}"

これを実行すると下記のように出力されます。
1 2 a b 3 c

カンマ区切りで下記のように出力する方法ありますか?
1, 2, a, b, 3, c


echo ${(j:, :)array} は使えませんでした。

845 名前:login:Penguin mailto:sage [2010/04/27(火) 23:37:13 ID:wOLuHHkh]
>>844
IFS="," ; echo "${array[*]}"


846 名前:login:Penguin mailto:sage [2010/04/28(水) 10:15:03 ID:ttzp8AMm]
echo "${array[@]}" | sed 's/ /, /g'



847 名前:844 mailto:sage [2010/04/28(水) 11:26:50 ID:+626EOW1]
>>845-846
できました!ありがとうございました。







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

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

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