[表示 : 全て 最新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あたりに色々と。

728 名前:login:Penguin mailto:sage [2010/03/21(日) 20:47:12 ID:NvA+aKwG]
>>727
ありがとう。
固定文字列を入れて比較するのは、いいアイディアですね。
(なんで思いつかなかったんだろう…)

729 名前:login:Penguin mailto:sage [2010/03/24(水) 01:16:09 ID:fusHHN2e]
お願いします。

・forの入れ子構造ってOKなんでしょうか?

#!/bin/bash
#nekoneko.sh

for var in aaa
do

for fstype in fs
do
hogehoge=neko
done

echo $var/$hogehoge
done

#sh nekoneko.sh

aaa/neko

期待結果は得られているのですが、勉強中なのであっているかどうかがわかりません。


・forでテキストファイルの読み込みってできないのでしょうか?
dosのバッチで言うところの for /f %%a in (nekoneko.txt) do 〜のような方法です。

よろしくお願いします。

730 名前:login:Penguin mailto:sage [2010/03/24(水) 01:24:36 ID:KIBvvI04]
>・forの入れ子構造ってOKなんでしょうか?
OK

>・forでテキストファイルの読み込みってできないのでしょうか?
DOSのforはしらんが
for a in `cat nekoneko.txt`
でいいのか?


731 名前:login:Penguin mailto:sage [2010/03/24(水) 10:02:51 ID:qcQ/2FhI]
>>729
インデントしようよ。
全角空白で書くけど、半角空白に変換してくれ。

#!/bin/bash
for var in aaa; do
 for fstype in fs; do
  hogehoge=neko
 done
 echo $var/$hogehoge
done

ファイル読んで回すのは while read とか使うんじゃね。

732 名前:login:Penguin mailto:sage [2010/03/24(水) 12:47:43 ID:D4crZAMy]
>>731
全角空白のインデントはやめろ!
半角空白のほうがいい
お前の専ブラ変えろ馬鹿


733 名前:login:Penguin mailto:sage [2010/03/24(水) 12:51:42 ID:D4crZAMy]
#!/bin/bash
for var in aaa; do
for fstype in fs; do
hogehoge=neko
done
echo $var/$hogehoge
done

734 名前:login:Penguin mailto:sage [2010/03/24(水) 12:58:21 ID:pFOtZDrD]
恥ずかしいね。

735 名前:login:Penguin mailto:sage [2010/03/24(水) 13:12:41 ID:D4crZAMy]
usamimi.info/~linux/d/up/up0503.png
usamimi.info/~linux/d/up/up0504.png

生ログにはタブと半角空白はきちんと記録されてるから。
素直に表示する専ブラで見れば奇麗にインデントされる。

736 名前:login:Penguin mailto:sage [2010/03/24(水) 13:18:59 ID:pFOtZDrD]
おいおい、pre要素以外では連続する空白文字は一つにまとめられるのだが。
2ちゃんねるのデータ書式はウンコだけど、連続する空白文字をそのまま
表示する仕様なんてないぜ?

そういうブラウザを押しつけるのはどうなの、って思うけど。



737 名前:login:Penguin mailto:sage [2010/03/24(水) 13:25:53 ID:qcQ/2FhI]
>>732
うちの環境では半角空白でも見えるけど
相手の環境で見えるとは限らないから。

738 名前:login:Penguin mailto:sage [2010/03/24(水) 13:29:31 ID:pFOtZDrD]
これはブラウザ依存だと思うね。

空白文字をそのまま扱うものもあれば、HTMLの仕様に準じて無視するものもある。
  を使う手もあるのだが、これを同処理するかもブラウザ依存。
まあ2ちゃんねるがクソなんだが。

739 名前:login:Penguin mailto:sage [2010/03/24(水) 13:31:53 ID:KIBvvI04]
おまいらスクリプトについても語ってやれよ・・・

740 名前:login:Penguin mailto:sage [2010/03/24(水) 13:37:19 ID:D4crZAMy]
>>737
アンタ良い人だね。
でもな、コード貼る事が多いスレを見てるんなら閲覧者のほうでインデントするブラウザにしたほうがお互いに楽だぜ。
貼るほうもコピーする側もそのまま使えるんだから。うっかり全角空白入れたまま使う事もない。
スクリプトスレなら困る事少いかもだが、全角空白の入ったパッチ貼られたりしたら目もあてらんねぇよ?

741 名前:login:Penguin mailto:sage [2010/03/24(水) 13:39:50 ID:qcQ/2FhI]
>>740
だから「変換してくれ」って書いたじゃん。
閲覧者の環境まで責任持てん。

742 名前:login:Penguin mailto:sage [2010/03/24(水) 13:40:45 ID:qcQ/2FhI]
良い人とかってよりも、portability を重視しただけだよ。
書く環境と読む環境が同じとは限らない。
こういう配慮はスクリプト書きもいっしょ。

743 名前:login:Penguin mailto:sage [2010/03/24(水) 13:48:01 ID:D4crZAMy]
とりあえず「全角空白を推奨」するのだけは勘弁してくれ。
それが無きゃ俺も黙ってさ。


744 名前:login:Penguin mailto:sage [2010/03/24(水) 13:53:55 ID:qcQ/2FhI]
推奨なんてしてないよ。

745 名前:login:Penguin mailto:sage [2010/03/24(水) 14:04:24 ID:D4crZAMy]
>インデントしようよ。
>全角空白で書くけど、半角空白に変換してくれ。

インデントは推奨してるが、改めて見直すと全角空白推奨ではないと言われたら確かにそうだな。
いきなり俺の言い方がきつかったのは謝る。数日前にム板で同じような事があってココでもか!と思ったもんだからついな。
すまんかった >ID:qcQ/2FhI

746 名前:login:Penguin mailto:sage [2010/03/24(水) 14:05:59 ID:eh1BmETO]
 
藻前ら、モティツケ
     /\⌒ヽペタン
   /  /⌒)ノ ペタン
  ∧_∧ \ (( ∧_∧
 (; ´Д`))' ))(・∀・ ;)
 /  ⌒ノ ( ⌒ヽ⊂⌒ヽ
.(O   ノ ) ̄ ̄ ̄()__   )
 )_)_) (;;;;;;;;;;;;;;;;;;;)(_(




747 名前:login:Penguin mailto:sage [2010/03/24(水) 15:40:14 ID:8MgVQE42]
全角文字やTABなどを記号で表示するようにしておけば、
そうそう事故はないのでは?jaspace.elとか便利だよ。


748 名前:login:Penguin mailto:sage [2010/03/24(水) 15:52:39 ID:c/AsI/YT]
学習用のネタとかならともかくパッチを 2ch に貼んのはやめたほうがいいんじゃね
書き込み確認のとこに
投稿者は権利の何もかもを管理者に無償譲渡することを承諾しますみたいなこと書いてあるぜ

749 名前:login:Penguin mailto:sage [2010/03/24(水) 16:12:14 ID:o3qxm3DD]
どうしたんだ突然

750 名前:login:Penguin mailto:sage [2010/03/24(水) 18:28:22 ID:JGtYY8P/]
find -exec command {} +
はもっと知れ渡るべき
日経Linux

751 名前:login:Penguin mailto:sage [2010/03/24(水) 21:53:30 ID:LVpGQGYh]
xargsに慣れちゃって、手が勝手に打っちゃうんだよな

752 名前:login:Penguin mailto:sage [2010/03/25(木) 00:42:02 ID:AS83wWPj]
>>730
hww

753 名前:login:Penguin mailto:sage [2010/03/25(木) 05:46:35 ID:bk8Jf0RP]
ちゃんと理解しながら読んでいればインデントなんて枝葉末節。
自分のコードならばこだわるかも知れないけどね。

754 名前:login:Penguin [2010/03/25(木) 07:38:08 ID:woPIYugI]
>>728
UNIX板で知った
ttp://www.opengroup.org/onlinepubs/009695399/utilities/test.html
の、APPLICATION USAGE から先が勉強になったです。
-a や -o より && や || でつなぐ方がよいとか。お題の部分についてはこれ。
test "$1" = "bat" -a "$2" = "ball"
syntax errors occur if $1 evaluates to '(' or '!'.
One of the following forms prevents this; the third is preferred:
test "X$1" = "Xbat" -a "X$2" = "Xball"
test "$1" = "bat" && test "$2" = "ball"
test "X$1" = "Xbat" && test "X$2" = "Xball"

755 名前:login:Penguin mailto:sage [2010/03/25(木) 10:18:07 ID:Bu4gYkWT]
>>750
man find
したら、-exec command {} +の下に
-execdir command
とか
-execdir command {} +
とかを見つけた。勉強になった。

こういう事があると電子辞書より紙の辞書の方がいいかもと思う。


756 名前:login:Penguin mailto:sage [2010/03/25(木) 23:03:23 ID:AS83wWPj]
>>753
とかほざく輩に限ってテストパターンは無限大な開放系のソースを書いちゃうの。
要はモデル化ができてないと。愚直というか馬鹿正直と言うか。



757 名前:login:Penguin mailto:sage [2010/03/25(木) 23:09:11 ID:P4/zjZQS]
>>745
お前いいやつだなw

758 名前:login:Penguin mailto:sage [2010/03/26(金) 03:02:23 ID:y6rsP+OO]
>>756 読解力ないんだな(プ

759 名前:login:Penguin mailto:sage [2010/03/26(金) 07:00:58 ID:joqM+Eq0]
>>758
より多くの人に読解できることを目的にしていないロジックはオナニーだろう。

760 名前:login:Penguin mailto:sage [2010/03/26(金) 07:13:10 ID:jyaRuxPh]
つまり日本語はオナニー

761 名前:login:Penguin mailto:sage [2010/03/26(金) 07:49:22 ID:WwpVuIlf]
セックスよりも気持ちいい

762 名前:login:Penguin mailto:sage [2010/04/02(金) 15:42:26 ID:la5bZF10]
bashなどで標準出力はデフォルトで画面となっていますが、具体的にはどのファイルになりますか?
debianですと/dev以下にあるのだと思いますが。

763 名前:login:Penguin mailto:sage [2010/04/02(金) 16:00:38 ID:FvuB/nMw]
>>762
ls -l /proc/$$/fd/1

764 名前:login:Penguin mailto:sage [2010/04/05(月) 20:18:53 ID:HX4Ssz6U]
フラシュメモリ をマウントするとき
# mount /dev/sdb1 /mnt/usb
こんな感じでやると思いますが、
もし、フラシュメモリが挿されていて、かつ、マウントされていない場合これを実行し
その他の場合、実行しないという、シェルスクリプトを教えてください

765 名前:login:Penguin mailto:sage [2010/04/05(月) 20:31:37 ID:hbFmdj3V]
>>764
問題点は
・フラッシュメモリがささってないことをどうやって判定するか
・マウントされていないことをどうやって判定するか
でしょ。
それシェルスクリプトの話じゃないよ。

766 名前:login:Penguin mailto:sage [2010/04/05(月) 21:02:20 ID:HX4Ssz6U]
>>765
やはり無理ですか、
・フラッシュメモリがささってないことをどうやって判定するか
・マウントされていないことをどうやって判定するか
ここは、Cか何かで実装し、結果によって、振る舞いを決めるしかなさそうですね



767 名前:login:Penguin mailto:sage [2010/04/05(月) 21:12:06 ID:8DwAi4Rq]
/dev/disk/by-uuid/ 見てそのUSBメモリがささってるか判定して
マウントは /proc/mounts とか /etc/mtab 見ればわかる

768 名前:login:Penguin mailto:sage [2010/04/05(月) 21:58:19 ID:HX4Ssz6U]
>>767
できました、ありがとう。
それにしても
>それシェルスクリプトの話じゃないよ。
とは・・・・

769 名前:login:Penguin mailto:sage [2010/04/05(月) 22:26:27 ID:bIAGjuYt]
え、どこがシェルスクリプト?

770 名前:login:Penguin mailto:sage [2010/04/05(月) 22:26:30 ID:V3kmV0qU]
シェルの機能に全く関係ない話だから、スレ違いと言われても仕方ない

771 名前:login:Penguin mailto:sage [2010/04/05(月) 23:04:52 ID:10PWkAma]
>>769-770
君たちはきっとUNIX板のシェルスクリプトスレのほうが馴染むよ
向こうに移ったら?

772 名前:login:Penguin mailto:sage [2010/04/05(月) 23:09:37 ID:Do3l7NFE]
シェルの文法と組み込みコマンド以外は
スレ違い。

773 名前:login:Penguin mailto:sage [2010/04/06(火) 00:29:43 ID:cl/KUIMr]
そこまでは言わないけどさ、
>>764 のスクリプトって

>>765 && mount /dev/sdb1 /mnt/usb

で終わりじゃん。
あとは >>765 の条件をどう書くかだけ。
そこはシェルスクリプトの話じゃない。

774 名前:login:Penguin mailto:sage [2010/04/06(火) 23:07:19 ID:hKo4mn1/]
退屈すぎるんだよ
ただ手順を羅列していくだけの命題はこのスレではシェルスクリブトではない判定

775 名前:login:Penguin mailto:sage [2010/04/08(木) 12:37:33 ID:FdKyqazj]
/path//mydirというディレクトリが確かに存在します。
rm -rf path/mydir
とすれば削除できるのに
if [-d /path/mydir ]; then rm -rf path/mydir
とすると削除できません。

何故でしょうか。

776 名前:login:Penguin mailto:sage [2010/04/08(木) 12:49:32 ID:BdM60+Gl]
すばやくシェルスクリプトを作る方法を教えてください。



777 名前:login:Penguin mailto:sage [2010/04/08(木) 13:03:15 ID:ahHfR+UP]
>>775
if [ -d /path/mydir ]; then rm -rf /path/mydir

778 名前:login:Penguin mailto:sage [2010/04/08(木) 13:11:54 ID:YRM82Sus]
>>776
俺は指におもりをつけて毎日8時間訓練している。
だいぶ重いスクリプトも楽々書けるようになった。
でもやり過ぎには注意な。
知り合いに、焦点性ジストニアになってシェルスクリプターへの道を絶たれたやつが何人も居る。

779 名前:login:Penguin mailto:sage [2010/04/08(木) 15:13:49 ID:FdKyqazj]
揚げ足はいいからさっさと答えろボケ

780 名前:login:Penguin mailto:sage [2010/04/08(木) 15:21:34 ID:0e8PS1D/]
まず服を(ry

781 名前:login:Penguin mailto:sage [2010/04/08(木) 15:24:54 ID:rTqLBiaG]
>>779
問いが支離滅裂なので回答不能です

782 名前:login:Penguin mailto:sage [2010/04/08(木) 15:27:17 ID:ahHfR+UP]
>>779
ん? >>777 じゃ違った?
んじゃ権限まわりを確認。

783 名前:login:Penguin mailto:sage [2010/04/08(木) 16:01:31 ID:P25bssZd]
いきなりifとrmまとめずに

if [-d /path/mydir ]; then echo hoge

がhogeを出力するかどうかぐらい切り分けしようぜ。

784 名前:login:Penguin mailto:sage [2010/04/08(木) 16:03:13 ID:ahHfR+UP]
>>783
[ と -d は離さないとだめだよ。

785 名前:login:Penguin mailto:sage [2010/04/09(金) 16:33:43 ID:8l460jgK]
最近の初心者は、[ も一つのコマンドであることすら知らんのか?

786 名前:login:Penguin mailto:sage [2010/04/09(金) 16:36:53 ID:wbxQcOPK]
昔の初心者もそうだよ。



787 名前:login:Penguin mailto:sage [2010/04/09(金) 17:26:28 ID:ZKESoIes]
おじいちゃん、乙!

788 名前:login:Penguin mailto:sage [2010/04/09(金) 19:57:43 ID:1H+gjPy/]
[ ってコマンドだったの?

玄人だけど始めて知ったよ?orz

789 名前:login:Penguin mailto:sage [2010/04/09(金) 20:04:23 ID:5ssP89Ht]
LPICレベル3coreに受かったばかりの素人だけど
[]はtestコマンドの略式じゃなかったかな

790 名前:login:Penguin mailto:sage [2010/04/09(金) 20:26:24 ID:wbxQcOPK]
>>788
type [
help [

791 名前:login:Penguin mailto:sage [2010/04/09(金) 20:27:45 ID:i0zzyora]
>>788
コマンドじゃないなら何なんだよ

792 名前:login:Penguin mailto:sage [2010/04/09(金) 22:04:47 ID:+RKMLUfB]
>>791
構文。

C言語の == は関数ではないし。

793 名前:login:Penguin mailto:sage [2010/04/09(金) 22:06:05 ID:StH4VNmO]
昔は、[ は test へのハードリンクと決まってたもんだが、
いま手元のFedora 12を見たらそうじゃなかった。(ファイルサイズも違うし…)
やっぱり日々勉強ですな。

794 名前:login:Penguin mailto:sage [2010/04/09(金) 22:10:28 ID:wbxQcOPK]
>>793
coreutils の lbracket.c 読んでみ。

795 名前:login:Penguin mailto:sage [2010/04/09(金) 22:27:52 ID:StH4VNmO]
>>794
読んだ。
面白いけど、Coolとは言えんなぁ…

796 名前:login:Penguin [2010/04/10(土) 23:41:09 ID:IGsQWo8s]
grepで検索行以外の行を抽出する方法は無いでしょうか?



797 名前:login:Penguin mailto:sage [2010/04/11(日) 00:27:05 ID:eH4Novr7]
grep -v '文字列'

798 名前:login:Penguin [2010/04/11(日) 00:34:34 ID:3KDsWIIS]
>>797
ありがとう

799 名前:login:Penguin mailto:sage [2010/04/11(日) 16:13:06 ID:1yJmv1GD]
初めてシェルスクリプトを加工としていまうs

サブルーチンを作る参考にしようと#!/bin/shなファイルを見ているんですが
関数を使ったスクリプトはほとんどありません
こういうものでしょうか?

任意の値を返せないのでグローバルな変数を介する必要があると思いますが
保守性が低下しないうまい定義の仕方というのはあるんでしょうか

あるいは関数を使わなくてもいいようなシェルスクリプトの特有のコンセプト
とか書き方があるんでしょうか

漠然とした質問ですいません

800 名前:login:Penguin mailto:sage [2010/04/11(日) 16:21:22 ID:ESnWs44w]
漠然としてるねぇ。
もうちょっとスクリプト書きに慣れてから考えればいいんじゃないかな。

801 名前:login:Penguin mailto:sage [2010/04/11(日) 17:04:57 ID:btbPPhym]
いやそれより、初心者向きの参考書でも買って
一からじっくり勉強した方が良いと思う。
>>799は、ここで質問して解決するスキルレベルに程遠い。

802 名前:login:Penguin mailto:sage [2010/04/11(日) 17:49:36 ID:O63F6ul8]
>>801さんまじかっけー

803 名前:login:Penguin mailto:sage [2010/04/11(日) 20:21:58 ID:bAKRtVTC]
>関数を使ったスクリプトはほとんどありません
>こういうものでしょうか?
いえ。
ただ、スクリプトは、
1) 手っ取り早く仕上げる事が多いので十分に最適化されない
2) 最適化されたスクリプトは必ずしも可読性がよくないので敢えて最適化しない
といったことはあると思います。

804 名前:login:Penguin mailto:sage [2010/04/11(日) 20:51:15 ID:eH4Novr7]
わざわざ外部関数までつくって何でもシェルスクリプトでやるより多言語から単体のシェルスクリプト叩かせたほうが安心できる

805 名前:login:Penguin mailto:sage [2010/04/12(月) 01:55:25 ID:56zfLj4c]
>>803
回答ありがとうございます

最適化というのがどういうものか具体的には分かりませんが、例えば関数を組み合わせようと
すると値をやり取りするグローバル変数が必要になるのではと考えました。しかし、必要に
なるごとに関数内で定義、参照するとそういった変数がどこでどう利用されているか確認しなければ
ちょっとした変更も危険になると思います。あるいはメインの手続き側に定義を羅列するとしても
どう利用するのかはコメントでもしないかぎり分からないし、そもそも構造内部を関数へと段階的に
隠蔽する目的を果たせなくなってしまい、やはり可読性保守性は低下します。一方でルールベース
の対策でこういった問題を解決できるようにも感じたので、そういったことについてベーシックな議論を
している人たちがいるのではと思い質問しました。

しかしこのスレッドを読んでいると>>803(1)や>>804にあるように、そういう道具だと割りきって使う
ものだという風にも思いました。シェルスクリプトの欠点を何千万人もの人があえて見なかったこと
にして使っているとすると、とても面白いことですね。それだけ目的を満足させる道具で、また知っ
て初めて分かる魅力があるということなんでしょうかね

(2)については一枚目から鱗が落ちました。習作のつもりでUTF8のテキストをEUC-JPに変換して
からa2psでポストスクリプトを生成するコードを再発明しているのですが、たしかに関数を使っても
全然読みやすくなっていない! いや、正確には処理の始点と大枠の処理の流れは把握しやすく
なっていますが、コード量は後付けでどんどん増加するし、ちょっとした読みやすさのために定義
したマクロ的関数は、それ単体でみるとなんとも得体の知れないものになっていました。

色々な機能を試したいというのもあるのですが、やはり簡潔で読みやすいコードを書くということを
前提にして、そのうえでシェルスクリプトらしい書き方を身につけるようにします

806 名前:799,805 mailto:sage [2010/04/12(月) 02:02:53 ID:56zfLj4c]
勢いでいい子ちゃんぶった嘘をつきました・・
たぶん動けば汚くてもいいやの精神でなんだかよく分からないコードを書き続けると思います
ゴメンナサイです



807 名前:login:Penguin mailto:sage [2010/04/12(月) 11:43:55 ID:Qe0ukjkj]
/usr/binの中に'['とかゴミがあったので削除したら、起動しなくなったという
笑い話をよく聞いたな。

808 名前:login:Penguin mailto:sage [2010/04/12(月) 12:14:55 ID:Cm3bm4a3]
>>807
ほう、それは初耳だ。
いまどきの sh は [ を内蔵しているので、
外部コマンドの [ を意図して呼ばないかぎり存在しなくても問題ない。
[ が外部コマンドだった昔は、[ は /usr/bin ではなく /bin にあった。
# つーか、/usr/bin/[ なんて今でも linux だけ。


809 名前:login:Penguin mailto:sage [2010/04/12(月) 13:13:25 ID:s3PYGw84]
ここはLinux板ですから

810 名前:login:Penguin mailto:sage [2010/04/12(月) 13:31:44 ID:FrL0zKPd]
「[ を消してうんぬん」は Linux 以前の時代の話だと思う。

811 名前:login:Penguin mailto:sage [2010/04/12(月) 18:27:16 ID:rk0wy3GT]
プロプラの古いshを使ってないと通じないジョークだな

812 名前:799 mailto:sage [2010/04/17(土) 23:26:31 ID:f4tmK5PF]
先だっては大変お世話になりました
なんとか動くっぽいもの書けました

根本的に間違ってるところやイディオムに直すべきところなど多々あるんだろうと
思うんですが、身近に聞ける人がいなくて困ってます。ので誰かにレビューして欲しいです
なにとぞ、なにとぞー

up.af/015849

813 名前:799 mailto:sage [2010/04/17(土) 23:38:16 ID:f4tmK5PF]
すんません私のファイルはこっちでした
上のTシャツおっぱいは忘れてください^^
up.af/015867

814 名前:login:Penguin mailto:sage [2010/04/17(土) 23:41:35 ID:xq8djkPZ]
わざ。わざ

815 名前:login:Penguin mailto:sage [2010/04/18(日) 13:57:11 ID:XFWJRzoK]
献上品のTシャツおっぱいが404なので眺めるだけな

>#!/bin/sh
dashで動作確認したのなら素直に#!/bin/dash

> file_num=`expr $file_num + 1`
exprいらなそう
file_num=$((file_num + 1))

> local num=0
> for num in `seq 1 $file_num`; do
> source_files_get $num
> MESSAGE "converting: $file"
> cat "$file" | $NKF -e > "$temp_dir/${file##*/}"
> done
seqとcatいらなそう
local num=1
while [ $num -le $file_num ]; do
 source_files_get $num
 MESSAGE "converting: $file"
 $NKF -e "$file" > "$temp_dir/${file##*/}"
num=$((num + 1))
done

>local status=1
local使う意味なし&多分bashでコケる

816 名前:login:Penguin mailto:sage [2010/04/19(月) 01:23:48 ID:ZAvND9//]
>>815
式展開というものが色々あるんですね
むやみに外部コマンドを呼ばないという発想もなかったです
マニュアルを引いてあれこれ確認したいと思います
レスありがとうございました



817 名前:login:Penguin mailto:sage [2010/04/21(水) 22:02:51 ID:CZfDlwcf]
>>813
python風のループだな。
LLみたいに関数を使いたければ値をやり取りするフレームワークを書けばよいかも。

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