シェルスクリプト総合 その27
レス数が1000を超えています。これ以上書き込みはできません。
カンマ入っている場合には "" もしくは '' で囲わなければならないから、それはシェルスクリプトにとっても都合がいい、
IFS=',' fields=($raw)
で簡単にと思ったがそう甘くはなかった。最近流行りのevalでなんとかだとしても、$とかまた別の問題があるしなあ >>869
別にあれとは違うだろうにw 単にCSVだからって拒否反応示しすぎ 皆さんお答えありがとうございます。
出来るけど面倒だという感じですね。
PHP使いたいけど仕様上ダメみたいなんですよね。。。
後にメンテナンスが面倒くさそう >>867
残念ながらpythonは入ってなかったです。DBサーバーなんで >>873
perlで高機能な(?)Text::CSVを入れればだけど、それすらなら、
http://t2aki.doncha.net/?id=1403586022
なんぞの数行のをコピペってでもかな。後はperlスレだな >>869
いいえ、また "お前" が来てるんですよ >>872
上とかけあってperl/python/rubyのどれかを入れさせれもらった方がいいと思う。
あるいはjava VMがインストールされてるなら、そっち使ってもシェルよりは楽。 1990年代には確かにこういうプログラムもCで書いてたが、今では はやらんよ。
スクリプト言語とかJava VM系言語とかでCSVライブラリ呼ぶように書くのが普通。
もっと低レイヤの処理ならCも使うけど、業務システムにCを使うってのは、
開発効率が悪いせいで、ほぼ亡びた。 compgenによる補完候補の絞り込みですが
bashでは正常に動作するもののzshでは絞り込まれません。
なぜでしょう?
# bash 4.4.19 on Ubuntu 18.04
$ compgen -W "aaa bbb ccc" a
aaa
# zsh 5.5.1 on Ubuntu 18.04
% compgen -W "aaa bbb ccc" a
aaa
bbb
ccc
.zshrcでは
autoload -U +X compinit && compinit
autoload -U +X bashcompinit && bashcompinit
してます >>878
すでに入ってるLL使うならわかるが、JavaVM入れるくらいならCでいだろ。 >>880
>>876は「java VMがインストールされてるなら」って書いてあるじゃろ。
つまりCSV処理のためにjava VM入れるんじゃなくて既に入ってるならって話。
入ってないなら交渉してスクリプト言語入れる方を推奨だな。
エンタープライズ系は静的型検査が欲しいので相変わらずjava VMな言語が強いのよ。 シェルスクリプトでwebpackみたいに結合して1ファイルにしてくれるものとか
babelみたいにトランスパイルすることで言語を拡張するものって無いかな >>882
シェルアーカイブ形式とか?
file.sharという形で,ファイル後半に(圧縮した)バイナリーファイル,前半(というかヘッダ)に展開用シェルスクリプトとインストールスクリプトを書いておく)
最近のソフトウェアだとVMWare Horizon ClientsのLinux向けインストーラーがその形式だった。 >>883
別にバイナリファイルを動かそうって話じゃないよ
単にくっつけてくれればいいだけ >>885
だからぜんぜん違う
webpackみたいに1ファイルに結合するって話をしてる
結合しても結合する前と同じように動く
すこしはsharについて調べてきたら? shar知らない人のために説明しておくと、
これは単なる自己解凍形式の圧縮ファイル形式に過ぎない それよりwebpackとやらについて説明しておくべきだったろ
聞き方が悪い どう使いたいかとかわからんのにな
>>887って言ってるけど、得られるのは自分でそれを使ってダイレクトにも頑張ればできる範囲だし webpackはCのプリプロセッサのincludeみたいなやつだよ バンドルじゃないの。macOSのバンドルのようなのを単一ファイルでの
単にincludeだったらシェルスクリプトにcatでくっつければええやん。目的は単一のファイルにしたいだけなんだから
バンドルなんだからバンドルをハンドルするヤツが必要じゃないの。んなのはshar使って自分で作ればってとこじゃね webpackとかbabelとか覚えたてのキーワード並べてみたかったんでしょ
そんなのが必要になる状況がクソなんだがなw >>891
> >>887って言ってるけど、得られるのは自分でそれを使ってダイレクトにも頑張ればできる範囲だし
自分で頑張ればできるって話なら、ファイル結合なんだからcatでもできるよ?
自分で頑張ればいいだけ。結合されても大丈夫なようにコードを書く必要があるけどな
その頑張るのが面倒だからツール使うんだろう?
ちなみにsharなんていらない。だってこれ目的を満たすためのツールじゃないから
自分でcatで頑張る+圧縮もしたいなーって思った時にオプションで使えるかもしれないツール ちなみにsharの問題は展開しないと使えないって所
ルータのような書き込み回数に制限があるシステムでは致命的 あと展開のためのコマンドが入ってない可能性もあるしな
ファイル結合するだけなら、外部のコマンドにも依存しない シェルスクリプトは実行可能なままファイル結合する必要性があんまりないってこと
そんなのとかトランスパイルとかが必要になるJavaScriptを指して、クソだなって言われてるんじゃない? てゆうかそれ以前に、そんな長いプログラムをシェルスクリプトで書いちゃいかんやろ。
他の言語を使うべき。
JavaScriptくらい高級な言語ならアリだけど。 ディレクトリ A の中のファイルを全部
ディレクトリ B の中の同名のファイルと diff を撮りたいんですけどどうすればいいですか
xarg で1つの引き数を渡す方法しかわからないのでおねがいします システムのスクリプトにも参考になるものがたくさんあるよね。zgrepとかzdiffとか
linuxだけどlddがシェルスクリプトだったのには驚いた bashのHISTTIMEFORMATを設定した環境だと
sshログアウトしてもbgプロセス消えないみたいなんだが
なんでなん? 設定してなくてもsshログアウトしてもbgプロセス消えないけど、うちでは
他の設定じゃね うーむ
会社の環境だとその設定の有無で変わったんだけど
今vmでcentのminimal立てたら設定なしにbgプロセス生きてた
何か勘違いしてるのか https://serverfault.com/questions/117152/do-background-processes-get-a-sighup-when-logging-off
だって。ちょい昔からデフォで子プロセスにHUP送らなくなってるんだなあ。OSやディストリによってデフォが違うだろうけど
huponexitオンにして、HISTTIMEFORMATを設定してもbgプロセスは消えるねえ case文で,Bash特有の高速化オプションとかありませんかね。 >>910
高速化できるんならオプションじゃなく最初からそうしてると思うが、
さらに、高速化が必要なほど遅いcaee文とは? >>902
Aにあるファイル名だけ比較したいんです
Bのなかにはほかにもファイルがあったりするので
diff A/$f B/$f
とか場合によっては
diff A/$f B/*/$f みたいなことがしたかったのです…
ls なり find なりの出力ファイル名を変数に取り出すのってやっぱり難しいんですね
諦めます
レスありがとうございました お題としてはちょっと楽しめると思うけど、諦めちゃうのか find A -type fして、それぞれbasenameとって、find B -name filename -exec hogeってかんじかな。
B側で何度もfindするのを減らしたいけど、キャッシュされればそれほど負荷じゃないか。 diffの話ついでに
(GNU) diffでディレクトリごと比較したときに、一方のディレクトリにのみあるファイルを無視するオプションってある?
diff -r /dirA /dirB | grep -v 'にのみ存在'
とやればまあ大抵の場合解決するんだけども、たまたまあるファイルの変更箇所に「にのみ存在」っていう文があった時に
困るので、できればオプションで解決したい。 diffの出力って行頭の文字が重要なのに、
これを無視した日本語ロケール作者は反省するべき。 >>916
ああなるほど。
diffの出力結果では行頭は変化を表わすところだから
その行頭を除けばいいね。 >>900
> てゆうかそれ以前に、そんな長いプログラムをシェルスクリプトで書いちゃいかんやろ。
行数で使う言語を決めるなや
シェルスクリプトは、コマンドの連携処理を一番シンプルに書くことができる言語
シェルスクリプトが適している問題を、長いからという理由で他の言語を使うともっと長くなる
なぜ非効率な言語を使うのか? >>922
まさにシェルスクリプトがプログラム間連携のための言語だからだよ。
1000行以上にも及ぶ複雑なプログラム間連携処理を
シェルスクリプトで書く状況ってのは
モジュール分割に失敗してる可能性がきわめて高い。
100行くらいの単体でも十分に使えるシェルスクリプトが10個ならば問題ないが。
シェルスクリプトは現代的プログラミング言語の持つ数々の抽象化機能を
欠いていて大規模プログラミングに向かないことは常に意識するべき。 仕事でならな。個人的なのでもそういう学習習得意欲がないんだったら馬の耳に念仏かと >>926
> 1000行以上にも及ぶ複雑なプログラム間連携処理を
> シェルスクリプトで書く状況ってのは
> モジュール分割に失敗してる可能性がきわめて高い。
だからシェルスクリプトでモジュール分割するんでしょ? >>931
外部コマンドの呼び出しが多数存在する場合、
シェルスクリプトを使うのが向いてる >>933
外部コマンド呼び出しは敗北と同義よ!
漢なら全て内蔵コマンドで処理をせい! >>935
普通に . (source)を使用するだけだけど? >>934
内部コマンドだけで処理できるなら
普通の言語のほうが良いよ
外部コマンドの連携に強いシェルスクリプトは
外部コマンドを呼び出すために使うもの
逆に普通の言語だと外部コマンドの呼び出しは面倒なんだ。 >>936
そういうのもできてるなら話題になってないって言ってるんだけど
できてるって、言語的にできるできないじゃないよ
>>938
板違いってか本題から外れすぎだな >>939
だからモジュール分割は . で出来てるから話題になってないってことでしょ? この掲示板ってワッチョイないのでは…
というかidもなかった じゃあもうこの板捨てるか?
Linux板にでも移動すりゃいいでしょ >>946
OSの話じゃないから向こうでやってもいいかもね あっ、でも向こうだと動かすOSがLInux前提になってしまうのか バッチ、パワシェのスレがム板にあるから不自然じゃないよね 賛成だ
しかしシェルスクリプトがunixにいられなくなるってのもなんかすごいな まあUnixもそれだけ多くの人に知られてきたってことじゃない?
もちろんキチガイは不要だけども。 テンプレは同じでいいな
もし嫌ならそいつが新しいの考えろ とりあえず立てました。
テンプレを書き込もうとしたら長すぎと怒られたので、分割するついでにちょっと改変しました。
https://mevius.5ch.net/test/read.cgi/tech/1532397676/l50 >>962
実はワッチョイを提案したのは俺なんだけど
あんまり賛同者がいないようだし
勝手にやるのもどうかなと思ったんだわ。
今はID板でやって
それでも荒れるようであればワッチョイ付けるっていう方針でいいかなと思ってる >>963
俺はワッチョイも含めて賛成してたけど、まぁそれでいいか
ざっと厶板の他のスレみた感じワッチョイまで採用してるスレほとんどないみたいだし、あっちでもあまり使わない文化なのかもしれん、どうなんだろ どうせならIPアドレス表示まですればいいのに
攻撃してやんよ プログラム板ってここと違って保守しなきゃいけないよね
誰かどのくらいで落ちるか分かる人います? あぁ時間か
どうだったっけな、さすがに覚えてない
20レスすれば当面落ちないとだけしか 先日lispスレ立てたけど、4レスのまま全然落ちる気配ないよ。 >>963
その段階的なやり方で良いと思う
スレ立て乙!! UNIX板伝統のシェルスクスレもム板行きかあ
UNIX板に限らず、専門板って過疎ってるところ多いから、統廃合してほしいな シェルスクリプトはもはやUNIXだけのものじゃなくなったからなぁ。
クロスプラットフォームが当たり前になって、
OS別のマターというのもだいぶ限られてきたね。 UNIX板の中でシェルスクリプト総合スレが一番、というか唯一勢いがあるんだが、
これなくなると凄まじい限界集落になるな…
Vim/Emacs/TeXあたりもソフトウエア板あたりなんか行ったら、もう…(´;ω;`) WindowsではWSLでシェルスクリプトが動く
だけどWSL環境なんだよなぁ
Windows標準でbusyboxとか採用してくれればいいのに
バッチファイルの代わりとして使えるんだが バッチの意味不明なsyntaxと貧相なコマンド類は発狂しそうになるけど、パワシェではいかんの?
パワシェ使ったことないけど、さすがにまともに設計されてるんだろ PowerShellは、普段使いのシェルとしては使えない Powershellは高機能なんだろうけど、高機能すぎて、あれこれ調べているうちに疲れた
結果として、Powershellの機能を呼び出すバッチファイルが出来上がってしまった >>980
WindowsでもLinuxでも動くスクリプトの作成
busyboxがあればシェルと基本的なコマンドは手に入るから
あとは特定のアプリのWindowsバイナリ版を入れるだけで
WindowsでもLinuxでもMacでも使えるスクリプトが作れる
cygwinやmsysもあるけど、Windowsに標準搭載してほしい
最低限のことはできるようになる。
>>981
PowerShellはコマンド体型違うから >>984
cygwinのdllと起動batを持ち歩くといいよ
どこでもsh動く >>986
いつのまにか感染してました、で会社をクビになるんですね。 >>986
Windows標準でbusyboxとか採用してって話なのに
cygwinを持ち出されても、
そんなのが必要になるから、Windows標準で採用してって言ってるんだよ
で終わる >>988
SFU や WSL の流れからして、Busybox 相当の標準搭載も需要も無いと思いますよ。
必要ならば Sysinternals 等の TechNet フォーラムに参加して要望を出してみては。 >>989
需要がないのになんで次から次へと出てくるの? >>992
たぶん善意からだと思うが、すでに>>961
この板とはお別れ このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 90日 15時間 15分 29秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。