シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
前スレ:
シェルスクリプト総合 その28
http://mevius.5ch.net/test/read.cgi/tech/1532397676/
探検
シェルスクリプト総合 その29
■ このスレッドは過去ログ倉庫に格納されています
2018/09/21(金) 23:34:47.98ID:/eJt2TVD
655デフォルトの名無しさん
2019/06/05(水) 17:31:24.15ID:xkVLsoK0 横槍はするが、自分に横槍すんなか。やはりRuby厨と変わらないw
656デフォルトの名無しさん
2019/06/05(水) 17:34:27.22ID:HgsnwJuZ よっぽど悔しかったんだろうなぁ(笑)
657デフォルトの名無しさん
2019/06/05(水) 17:37:01.79ID:xkVLsoK0658デフォルトの名無しさん
2019/06/05(水) 17:39:55.68ID:HgsnwJuZ だからお前と問答する必要はない話だよねw
質問者にヒントを出した。あとは自分でやるか、"質問者"が泣きつくかどうかだろ
なんでお前が泣きついてるんだ?えーんえーん(笑)
質問者にヒントを出した。あとは自分でやるか、"質問者"が泣きつくかどうかだろ
なんでお前が泣きついてるんだ?えーんえーん(笑)
659デフォルトの名無しさん
2019/06/05(水) 17:43:17.72ID:xkVLsoK0 ヒントを出した、泣きつくかどうか
よくそんな言葉吐けるな。ちょっと前のいつものヤツか、その子供のような最後といい、よく恥ずかしげもなく書けるなw
よくそんな言葉吐けるな。ちょっと前のいつものヤツか、その子供のような最後といい、よく恥ずかしげもなく書けるなw
660デフォルトの名無しさん
2019/06/05(水) 17:47:03.77ID:HgsnwJuZ やっぱりいつもの悔しい思いをしたやつだったかw
661デフォルトの名無しさん
2019/06/05(水) 17:51:21.47ID:oTS9vdrC いつものヤツだったのは正解らしいww
662デフォルトの名無しさん
2019/06/05(水) 17:56:56.88ID:HgsnwJuZ いつもの悔しい思いをしたやつってのは正解らしいwww
663デフォルトの名無しさん
2019/06/05(水) 17:58:17.08ID:oTS9vdrC は?お前は敵がいっぱいだなwww
664デフォルトの名無しさん
2019/06/05(水) 17:59:16.05ID:xpgfEjrk お前ほどじゃないよw
665デフォルトの名無しさん
2019/06/05(水) 18:01:04.69ID:ye33y5kG bash や zsh の場合、locale 依存なんだなぁ
$ bash -c 'LC_CTYPE=C; case 1 in *[![:cntrl:][:print:]]*) echo 'x';; *) echo 'y';; esac'
x
$ bash -c 'LC_CTYPE=ja_JP.UTF-8; case 1 in *[![:cntrl:][:print:]]*) echo 'x';; *) echo 'y';; esac'
y
bash で [:ascii:] を使う場合には locale は関係なし
$ bash -c 'LC_CTYPE=C; [[ 1 = *[![:ascii:]]* ]] && echo x || echo y'
x
$ bash -c 'LC_CTYPE=ja_JP.UTF-8; [[ 1 = *[![:ascii:]]* ]] && echo x || echo y'
x
$ bash -c 'LC_CTYPE=C; case 1 in *[![:cntrl:][:print:]]*) echo 'x';; *) echo 'y';; esac'
x
$ bash -c 'LC_CTYPE=ja_JP.UTF-8; case 1 in *[![:cntrl:][:print:]]*) echo 'x';; *) echo 'y';; esac'
y
bash で [:ascii:] を使う場合には locale は関係なし
$ bash -c 'LC_CTYPE=C; [[ 1 = *[![:ascii:]]* ]] && echo x || echo y'
x
$ bash -c 'LC_CTYPE=ja_JP.UTF-8; [[ 1 = *[![:ascii:]]* ]] && echo x || echo y'
x
666デフォルトの名無しさん
2019/06/05(水) 18:05:10.12ID:xpgfEjrk >>665
そうそう。だから面倒なので「ASCIIコード以外にあてはまるかどうか調べてない」し
「最悪一文字ずつ書けばいい」
あとbashやzshって限定しなくて良いよ。全部そうだから
> bash で [:ascii:] を使う場合には
[:ascii:]はPOSIXクラスじゃない
そうそう。だから面倒なので「ASCIIコード以外にあてはまるかどうか調べてない」し
「最悪一文字ずつ書けばいい」
あとbashやzshって限定しなくて良いよ。全部そうだから
> bash で [:ascii:] を使う場合には
[:ascii:]はPOSIXクラスじゃない
667デフォルトの名無しさん
2019/06/05(水) 18:12:43.44ID:9iVEjLSM なんで誰も求めていないPOSIXや速さにそんなにこだわるんだかな
>>665はちゃんと前段と分けて「bash で [:ascii:] を使う場合」とも言っている=「bashで」と言っているのに、なんでそうも自分は知ってるを出したいんだか
>>665はちゃんと前段と分けて「bash で [:ascii:] を使う場合」とも言っている=「bashで」と言っているのに、なんでそうも自分は知ってるを出したいんだか
668デフォルトの名無しさん
2019/06/05(水) 18:15:02.41ID:ye33y5kG ところが Ubuntu の dash(conform with the POSIX 1003.2 and
1003.2a specifications for the shell)は依存しないのよね…(上の例ではどちらも x を返す)
1003.2a specifications for the shell)は依存しないのよね…(上の例ではどちらも x を返す)
669デフォルトの名無しさん
2019/06/05(水) 18:15:24.53ID:oTS9vdrC 他人のレスを読めないのに妄想だけは
いつものことか
いつものことか
670デフォルトの名無しさん
2019/06/05(水) 18:15:31.51ID:xpgfEjrk 「求めていない」と明言していない以上、
「求めていない」なんてお前が断定するなってことだよ。
「求めていない」なんてお前が断定するなってことだよ。
671デフォルトの名無しさん
2019/06/05(水) 18:17:47.05ID:9iVEjLSM 読めない人だねえ
672デフォルトの名無しさん
2019/06/05(水) 18:21:58.87ID:9iVEjLSM673デフォルトの名無しさん
2019/06/05(水) 18:29:57.26ID:9iVEjLSM dashはプログラムでロケール(LC_CTYPE)の設定をしてない手抜きとかか。も考えられるね。どうであろうとデフォ= Cという
674デフォルトの名無しさん
2019/06/06(木) 17:44:19.74ID:KuydtzNG675デフォルトの名無しさん
2019/06/06(木) 19:05:13.64ID:f9T2ABl2 虚栄心の塊を助けるような真似はしたくはないな俺だったら
676デフォルトの名無しさん
2019/06/07(金) 08:04:35.63ID:rFfmCjQx 「助ける」って表現おかしくね?
だって誰も「助けてくれ」なんて言ってないじゃん。
既に質問者の「助けて」には親切な奴が答えてくれている途中だった。
正しく動くプログラムに勝手にケチ付けた挙句、なんの案も出さずに「間違ってる」だけしか言ってないよね。
だって誰も「助けてくれ」なんて言ってないじゃん。
既に質問者の「助けて」には親切な奴が答えてくれている途中だった。
正しく動くプログラムに勝手にケチ付けた挙句、なんの案も出さずに「間違ってる」だけしか言ってないよね。
677デフォルトの名無しさん
2019/06/07(金) 09:02:53.19ID:wbS/xMGA それな。
こっちは「こんな感じで作れますよー」って言ってるだけ
あとは簡単なので質問者でもできるだろう
(できないなら何かしらのレスをするだろう)
そこにいちいち、それは完璧に動かないって言うだけ。言うだけ厨w
こっちは「こんな感じで作れますよー」って言ってるだけ
あとは簡単なので質問者でもできるだろう
(できないなら何かしらのレスをするだろう)
そこにいちいち、それは完璧に動かないって言うだけ。言うだけ厨w
678デフォルトの名無しさん
2019/06/07(金) 14:05:05.10ID:tJklw1kZ 怪しいレスだなw
679デフォルトの名無しさん
2019/06/07(金) 23:38:40.76ID:sMkNqk8q680デフォルトの名無しさん
2019/06/12(水) 05:02:41.26ID:mlkAn7XZ シェルスクリプトのスレは以下に統合しました。
今後シェルスクリプトの話題はこちらで
くだらねえ質問はここに書き込め! Part 236
https://mao.5ch.net/test/read.cgi/linux/1556462911/
今後シェルスクリプトの話題はこちらで
くだらねえ質問はここに書き込め! Part 236
https://mao.5ch.net/test/read.cgi/linux/1556462911/
681デフォルトの名無しさん
2019/06/14(金) 01:38:30.44ID:ndORQo1H 某知恵袋で見かけた「ID非公開」さんの質問。
> Linuxのシェルスクリプトで質問です。
> リダイレクトの0は標準入力、1は標準出力、2は標準エラー出力。
> 0、1、2の他にも、3以上の番号もあるそうです。
> これら、3以上の番号を使った例を教えてください。
カテゴリマスター sle********さんの回答
> ファイルをオープンすれば3から順に使われるのだけど。
> 0,1,2の3つしか呼び出すプログラムには伝わらないのでできないのじゃないかな。
シェルスクリプトの話だということすら理解できてないなら回答するなよ。
シェルスクリプト リダイレクト exec
でググれよとか思ったけど、「ID非公開」という時点で相手にする価値が無いしなあ…
> Linuxのシェルスクリプトで質問です。
> リダイレクトの0は標準入力、1は標準出力、2は標準エラー出力。
> 0、1、2の他にも、3以上の番号もあるそうです。
> これら、3以上の番号を使った例を教えてください。
カテゴリマスター sle********さんの回答
> ファイルをオープンすれば3から順に使われるのだけど。
> 0,1,2の3つしか呼び出すプログラムには伝わらないのでできないのじゃないかな。
シェルスクリプトの話だということすら理解できてないなら回答するなよ。
シェルスクリプト リダイレクト exec
でググれよとか思ったけど、「ID非公開」という時点で相手にする価値が無いしなあ…
682デフォルトの名無しさん
2019/06/14(金) 02:49:59.61ID:IaHhNJVN なにをいいたいのだか
683デフォルトの名無しさん
2019/06/14(金) 14:10:08.67ID:BMAIfRwQ まあ確かにその説明は間違ってるけど
態々Yahoo知恵袋の回答を5chに持って来てまで叩くことあるかね……。
態々Yahoo知恵袋の回答を5chに持って来てまで叩くことあるかね……。
684デフォルトの名無しさん
2019/06/14(金) 22:48:51.07ID:0KPEzZXE そう言えば以前 flock コマンドを使ってここに書かれているような排他ロックを掛けるのを書いたことがある。
http://fj.hatenablog.jp/entry/2016/03/12/223319
で、リダイレクトはこの例のように 200 とか使ったのだが、しかし、これが使われていたらまともに動かないのではないかと思う。
かといって現在使われていないファイルデスクリプタを探す方法があるのかというと、Linux なら /proc/$$/fd/ 以下を見れば
良いんだろうが多分OSごとにやり方が違っていると思う。ということで開きファイルでスクリプタを探す方法は bash にあるんだ
ろうか? (bash でなくても良いが)。それとも探さずともシステムコールの open() 等のように空きを探し出して使ってくれる
みたいな書き方はできるんだろうか?
http://fj.hatenablog.jp/entry/2016/03/12/223319
で、リダイレクトはこの例のように 200 とか使ったのだが、しかし、これが使われていたらまともに動かないのではないかと思う。
かといって現在使われていないファイルデスクリプタを探す方法があるのかというと、Linux なら /proc/$$/fd/ 以下を見れば
良いんだろうが多分OSごとにやり方が違っていると思う。ということで開きファイルでスクリプタを探す方法は bash にあるんだ
ろうか? (bash でなくても良いが)。それとも探さずともシステムコールの open() 等のように空きを探し出して使ってくれる
みたいな書き方はできるんだろうか?
685デフォルトの名無しさん
2019/06/14(金) 22:49:46.28ID:0KPEzZXE 間違えた。開きじゃなくて空きだな。
686デフォルトの名無しさん
2019/06/14(金) 23:00:24.10ID:gXbRy3uY687デフォルトの名無しさん
2019/06/14(金) 23:05:28.80ID:gXbRy3uY Ruby のTempfile みたいな、一時ファイルでも作れば?
688デフォルトの名無しさん
2019/06/14(金) 23:21:07.72ID:kMuJFPPh689デフォルトの名無しさん
2019/06/18(火) 06:18:56.48ID:3nOE2mBA プログラム板にキチガイ降臨中!botに一晩も反応する異常さ
一般人(学校恩師)に殺害予告をしているのでスレ建て通報してください。
https://mevius.5ch.net/test/read.cgi/tech/1559872586/
142 名前:a4 ◆700L1Efzuv 投稿日:2019/06/18(火) 05:29:55 ID://qVkzO
>>141
名古屋の人な 俺ね、君の問題を大橋先生と混ぜないことにする。つまりね、
片桐孝洋のことをボコろうと思う。普通に顎の骨を折る。これくらいで警察来るか?
一般市民とかさ、普通にさ、俺らの秘密なんだけどさ、日本人なんて復活ねーから。
一般人(学校恩師)に殺害予告をしているのでスレ建て通報してください。
https://mevius.5ch.net/test/read.cgi/tech/1559872586/
142 名前:a4 ◆700L1Efzuv 投稿日:2019/06/18(火) 05:29:55 ID://qVkzO
>>141
名古屋の人な 俺ね、君の問題を大橋先生と混ぜないことにする。つまりね、
片桐孝洋のことをボコろうと思う。普通に顎の骨を折る。これくらいで警察来るか?
一般市民とかさ、普通にさ、俺らの秘密なんだけどさ、日本人なんて復活ねーから。
690デフォルトの名無しさん
2019/06/18(火) 15:03:38.59ID:3Qr44a8e shebangの書き方について教えてください。
#!/bin/sh
# Next line is comment in Tcl, but not in sh... \
exec tclsh "$0" ${1+"$@"}
( 出典: https://rosettacode.org/wiki/Multiline_shebang )
コメント解釈の違いを利用して複数行に云々は分かります。
ただ気になった箇所が...
${1+"$@"}
これは一体どういう意味合いが込められてるのでしょうか?
Tcl 以外にも Perl とかでも同様の箇所があります。
引数 $1 が unsetなら null
そうでなければ "$1" "$2" "$3" . . . って事ですよね。
それって、ただ "$@" と書くのと違いが分かりません。
ちなみに公式推奨は
man tclsh8.5 までは "$@"
man tclsh8.6 からは ${1+"$@"} になっています。ただし説明文はそのままでした。
#!/bin/sh
# Next line is comment in Tcl, but not in sh... \
exec tclsh "$0" ${1+"$@"}
( 出典: https://rosettacode.org/wiki/Multiline_shebang )
コメント解釈の違いを利用して複数行に云々は分かります。
ただ気になった箇所が...
${1+"$@"}
これは一体どういう意味合いが込められてるのでしょうか?
Tcl 以外にも Perl とかでも同様の箇所があります。
引数 $1 が unsetなら null
そうでなければ "$1" "$2" "$3" . . . って事ですよね。
それって、ただ "$@" と書くのと違いが分かりません。
ちなみに公式推奨は
man tclsh8.5 までは "$@"
man tclsh8.6 からは ${1+"$@"} になっています。ただし説明文はそのままでした。
691デフォルトの名無しさん
2019/06/18(火) 15:38:35.82ID:3Qr44a8e 良い解説があったので解決しました。
https://www.in-ulm.de/~mascheck/various/bourne_args/
スクリプトに引数を与えない場合、
一部の古いシステムでは "$@" の解釈が
nothing (何もない) ではなく "" (空文字)になってしまうからだそうです。
https://www.in-ulm.de/~mascheck/various/bourne_args/
スクリプトに引数を与えない場合、
一部の古いシステムでは "$@" の解釈が
nothing (何もない) ではなく "" (空文字)になってしまうからだそうです。
692デフォルトの名無しさん
2019/06/18(火) 15:51:31.49ID:CxecAVS8693デフォルトの名無しさん
2019/06/18(火) 16:43:58.58ID:+9W61W8S 参考までに言っておくと、>>691のリンク先にも書いてあるが、
古いzshは ${1+"$@"} は期待したとおりに動かない
完璧な解決方法は、例 eval exec tclsh "\"$0\"" ${1+'"$@"'}
古いzshは ${1+"$@"} は期待したとおりに動かない
完璧な解決方法は、例 eval exec tclsh "\"$0\"" ${1+'"$@"'}
694デフォルトの名無しさん
2019/06/18(火) 17:09:27.93ID:3Qr44a8e なるほど、勝手にアンクォートするようなドジっ子まで考慮しますか....
695デフォルトの名無しさん
2019/06/18(火) 21:39:14.68ID:ADqK1Q88 お約束
・特記なき場合,Bourne ShellもしくはPOSIX準拠のsh互換(というより再現=jシェルが質問・議論の前提です。
つまりシェルスクリプトのシバンは#!/bin/shです。
他のシェル(Bash, Zsh, Ksh, BusyBox sh, DASH, Yash, posh, fish, (t)csh)などの専用機能に依存する場合は,その旨を明示しましょう。
macOS及びGNU/Linuxの利用者は/bin/shの実体がbashなので*特に*注意; 自覚なきbashism――シバンが#!/bin/shなのにBashに依存する構文を使っていませんか?
※ただしDebian, Ubuntuなどでは/bin/shの実体はPOSIX shにかなり近い(つまり独自の拡張がほとんどない)DASHですのであまり気にしないでも大丈夫です。
FreeBSDの利用者は/bin/shの実体がashなので注意。
Solaris及びOpenBSDの利用者は/bin/shの実体がKshなので注意。
(t)cshでのシェルスクリプトは*まったく推奨しません*。
(参考URL: http://www.speech-lab.org/~hiroki/csh-whynot.euc)
・POSIX (Portable Operating System Interface) に準拠しましょう。
有用なリンクはhttps://en.wikipedia.org/wiki/POSIX末節などを参照。
最新の仕様はこちらへ: http://pubs.opengroup.org/onlinepubs/9699919799/
(左上の「Shell & Utilities」から各コマンドの仕様を閲覧できます。また,コマンドだけでなく,ファイルその他の仕様も閲覧できます)
・Version 7 UNIXのsh(1)に一番近いのはOpenSolaris由来のHeirloom sh,次点でDebianなどに搭載されているDASH。
Heirloom sh: http://heirloom.sourceforge.net/sh.html
Dash shell: http://gondor.apana.org.au/~herbert/dash/
・Unixにはシェルスクリプトに便利な小さなコマンド類がいろいろあります。
「並び換え (sort(1))」「検索 (grep(1))」等々。
Manページや各種リンク(http://pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.htmlなど)を見ましょう。
apropos(1)ないしはman(1)の-kオプションでそれらしい単語による簡単な検索もできます。
・ワイルドカードは正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆうな
・特記なき場合,Bourne ShellもしくはPOSIX準拠のsh互換(というより再現=jシェルが質問・議論の前提です。
つまりシェルスクリプトのシバンは#!/bin/shです。
他のシェル(Bash, Zsh, Ksh, BusyBox sh, DASH, Yash, posh, fish, (t)csh)などの専用機能に依存する場合は,その旨を明示しましょう。
macOS及びGNU/Linuxの利用者は/bin/shの実体がbashなので*特に*注意; 自覚なきbashism――シバンが#!/bin/shなのにBashに依存する構文を使っていませんか?
※ただしDebian, Ubuntuなどでは/bin/shの実体はPOSIX shにかなり近い(つまり独自の拡張がほとんどない)DASHですのであまり気にしないでも大丈夫です。
FreeBSDの利用者は/bin/shの実体がashなので注意。
Solaris及びOpenBSDの利用者は/bin/shの実体がKshなので注意。
(t)cshでのシェルスクリプトは*まったく推奨しません*。
(参考URL: http://www.speech-lab.org/~hiroki/csh-whynot.euc)
・POSIX (Portable Operating System Interface) に準拠しましょう。
有用なリンクはhttps://en.wikipedia.org/wiki/POSIX末節などを参照。
最新の仕様はこちらへ: http://pubs.opengroup.org/onlinepubs/9699919799/
(左上の「Shell & Utilities」から各コマンドの仕様を閲覧できます。また,コマンドだけでなく,ファイルその他の仕様も閲覧できます)
・Version 7 UNIXのsh(1)に一番近いのはOpenSolaris由来のHeirloom sh,次点でDebianなどに搭載されているDASH。
Heirloom sh: http://heirloom.sourceforge.net/sh.html
Dash shell: http://gondor.apana.org.au/~herbert/dash/
・Unixにはシェルスクリプトに便利な小さなコマンド類がいろいろあります。
「並び換え (sort(1))」「検索 (grep(1))」等々。
Manページや各種リンク(http://pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.htmlなど)を見ましょう。
apropos(1)ないしはman(1)の-kオプションでそれらしい単語による簡単な検索もできます。
・ワイルドカードは正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆうな
696デフォルトの名無しさん
2019/06/22(土) 11:26:37.15ID:RW0mnOsC bashしか使ったことないけど下手に汎用性を意識してshで書くと裏目に出るってことか
某原理主義者涙目だなそりゃ
某原理主義者涙目だなそりゃ
697デフォルトの名無しさん
2019/06/22(土) 14:23:45.59ID:rnpNzk5p 裏目ってなんの話?
698デフォルトの名無しさん
2019/06/22(土) 17:23:54.76ID:QCRIg0Bb 以前(といっても10年以上前)は汎用性を考えて、
ブレース展開とかを使わずに書くようなこともしてたけど、
今はもうbashベッタリな書き方をするようになったわ。
それで困ったことはなかったし。
ブレース展開とかを使わずに書くようなこともしてたけど、
今はもうbashベッタリな書き方をするようになったわ。
それで困ったことはなかったし。
699デフォルトの名無しさん
2019/06/22(土) 17:26:21.61ID:rnpNzk5p dashで動かないから困ってるんだが・・・
700デフォルトの名無しさん
2019/06/22(土) 17:48:50.05ID:7bhVGeaO macはzshになるんだってなw
701デフォルトの名無しさん
2019/06/22(土) 17:59:35.28ID:rnpNzk5p702デフォルトの名無しさん
2019/06/22(土) 20:03:08.93ID:UkgQSivT zshとの比較ではbashが遅いみたいだけど
703デフォルトの名無しさん
2019/06/22(土) 20:43:07.17ID:nLud9E0Q zshは関数呼び出しが遅いんだよね
704デフォルトの名無しさん
2019/06/22(土) 21:47:38.28ID:wZKOjh5O 2倍遅いくらい?
システムコールでのシステム内滞在(?)の方は4倍弱かかってんのね。なんらかのシステムコールの呼び出し回数が多いのか
システムコールでのシステム内滞在(?)の方は4倍弱かかってんのね。なんらかのシステムコールの呼び出し回数が多いのか
705デフォルトの名無しさん
2019/06/22(土) 21:55:26.50ID:wZKOjh5O 4倍どころじゃないなwなんだろ
706デフォルトの名無しさん
2019/06/22(土) 22:48:15.57ID:nLud9E0Q707デフォルトの名無しさん
2019/06/23(日) 00:33:42.02ID:T9PQd+F5 シェルスクリプトというより対話シェルの話題なんだけど
Kshを「業務上 仕方無く(AIX案件とか)」とかではなく使ってる人っています?
今までBashを対話シェルに使ってきたけどKshもかなり便利そうだし何より高速らしいので興味はある
公式サイト(http://www.kornshell.com/)もあってドキュメントも充実してそうだから使ってみたくはあるんだけど
実際に令和にもなってKshを常用してる人がいるのか知りたい。
Kshを「業務上 仕方無く(AIX案件とか)」とかではなく使ってる人っています?
今までBashを対話シェルに使ってきたけどKshもかなり便利そうだし何より高速らしいので興味はある
公式サイト(http://www.kornshell.com/)もあってドキュメントも充実してそうだから使ってみたくはあるんだけど
実際に令和にもなってKshを常用してる人がいるのか知りたい。
708デフォルトの名無しさん
2019/06/23(日) 01:41:24.67ID:ZvVZ9R+J bashですら「業務上 仕方無く(Linux案件とか)」、だなあ
AIXで生活できるような金持ちっているのかねw
AIXで生活できるような金持ちっているのかねw
709デフォルトの名無しさん
2019/06/23(日) 08:23:09.41ID:EWmWLeCI 私は業務上の制限がないので、自分の意志で bash を使っているけどね
不便を感じたことは一度もない
不便を感じたことは一度もない
710デフォルトの名無しさん
2019/06/23(日) 08:40:08.51ID:ZvVZ9R+J お題はkshで生活してる人は?なのにbashで不便がないとか言われても可哀想だ
711デフォルトの名無しさん
2019/06/23(日) 09:17:09.53ID:fwFAut7X for でループすると遅いから、while を使えばよい
712デフォルトの名無しさん
2019/06/23(日) 20:48:21.80ID:Hk4wLzeC シェルスクリプトで遅いと感じるのなら
それはシェルスクリプト向きではないということだ
それはシェルスクリプト向きではないということだ
713デフォルトの名無しさん
2019/06/23(日) 21:03:39.97ID:TZygGBwZ シェルスクリプトしかできないんだろう。選択肢がそれ唯一という
714デフォルトの名無しさん
2019/06/23(日) 21:54:21.81ID:WHM6Ibwm 辛くなったら違う言語にも手を伸す機会が訪れた と捉えましょう
715デフォルトの名無しさん
2019/06/23(日) 22:23:28.14ID:26vacGY+ ぼくなんか手作業より速ければそれで満足するぜ?
716デフォルトの名無しさん
2019/06/23(日) 23:30:33.10ID:qRDZMtxU テキストファイルごにょごにょするときはシェルスクリプト一択
717デフォルトの名無しさん
2019/06/23(日) 23:42:25.49ID:T9PQd+F5 なんか寧ろ
「シェルスクリプトが得意とする作業なのに
シェルスクリプトを知らないせいでC#やRubyやPythonやらに固執する」
っていう例を数多く見掛けるな。特にWeb上のブログとか。
「シェルスクリプトが得意とする作業なのに
シェルスクリプトを知らないせいでC#やRubyやPythonやらに固執する」
っていう例を数多く見掛けるな。特にWeb上のブログとか。
718デフォルトの名無しさん
2019/06/24(月) 00:09:49.32ID:JSF3ka2M719デフォルトの名無しさん
2019/06/24(月) 08:34:33.19ID:Ih+U6NjR sed, awk, perl でほとんどの場合は事足りるね
720デフォルトの名無しさん
2019/06/24(月) 09:13:55.59ID:XM+cNyeI awk使うならsedいらんやろ
perl使うならawkいらんやろ
perl使うならawkいらんやろ
721デフォルトの名無しさん
2019/06/24(月) 09:16:06.21ID:d7e7JOi5 awkは書かねえ
たった1行
たった1行
722デフォルトの名無しさん
2019/06/24(月) 09:26:43.54ID:Ih+U6NjR 最近は ruby も使ってるな
だからって ruby 以外全部いらんとか言わないけどなw
だからって ruby 以外全部いらんとか言わないけどなw
723デフォルトの名無しさん
2019/06/24(月) 09:54:11.13ID:GG24ezzu シェルスクリプトと言いながら、ほとんどをawk使って実装しているのを見ると
お前大したことないなって思ってしまう。
お前大したことないなって思ってしまう。
724デフォルトの名無しさん
2019/06/24(月) 13:17:34.61ID:a0F4XMAJ awk は、CSV が使えないだろ
それと、空白で、列を区切っている際、文字列内に空白があると、どうなるのか?
誤動作するのか?
やっぱり、Ruby が楽
それと、空白で、列を区切っている際、文字列内に空白があると、どうなるのか?
誤動作するのか?
やっぱり、Ruby が楽
725デフォルトの名無しさん
2019/06/24(月) 13:33:16.85ID:c6qVqrI9 まあ適材適所ですよねー
自分用なら好きにすればいいけど、
仕事で超絶技巧を駆使したスクリプトを残されても困りますし。
自分用なら好きにすればいいけど、
仕事で超絶技巧を駆使したスクリプトを残されても困りますし。
726デフォルトの名無しさん
2019/06/24(月) 13:39:12.42ID:O6cXrA2h GNU awk なら組込み変数 FPAT(Field PATtern) を使う方法が
あるけど、
echo 'aaa "bbb ccc" ddd' | gawk -v FPAT='([^ ]+)|(\"[^\"]+\")' '{print $2}'
まぁ使わないわな
あるけど、
echo 'aaa "bbb ccc" ddd' | gawk -v FPAT='([^ ]+)|(\"[^\"]+\")' '{print $2}'
まぁ使わないわな
727デフォルトの名無しさん
2019/06/24(月) 14:17:45.54ID:ZKJigLEQ 素のwindowsで正規表現パターンの置換コマンドを使おうとする場合、
一番手軽なのはBusyBoxのsedかねぇ。
他のPCで実行する必要があるときいつも悩むわ。
一番手軽なのはBusyBoxのsedかねぇ。
他のPCで実行する必要があるときいつも悩むわ。
728デフォルトの名無しさん
2019/06/24(月) 14:20:32.48ID:GG24ezzu WSLの(Ubuntuの)sedやろ
729デフォルトの名無しさん
2019/06/24(月) 17:10:03.02ID:qnOmIbRW いずれにしてもPython・Ruby・Perlを中途半端に知ってるせいで
シェルスクリプトでやればクソ程 単純な作業を
ファイル操作関数なんかをこねくりまわしてるのを見ると
いやPython・Ruby・Perlなんかよりシェルスクリプトのほうがよほど
学習が簡単で仕様も短いんだからそれを使えよw
とは思うな
シェルスクリプトでやればクソ程 単純な作業を
ファイル操作関数なんかをこねくりまわしてるのを見ると
いやPython・Ruby・Perlなんかよりシェルスクリプトのほうがよほど
学習が簡単で仕様も短いんだからそれを使えよw
とは思うな
730デフォルトの名無しさん
2019/06/24(月) 19:20:37.72ID:lyh6bIzY >>727
PowerShellだろ。コマンド入力と出力の例:
PS C:\> "The quick brown fox jumped over the lazy dog." -replace "([^ .]{4,})", "[`$1]"
The [quick] [brown] fox [jumped] [over] the [lazy] dog.
PowerShellだろ。コマンド入力と出力の例:
PS C:\> "The quick brown fox jumped over the lazy dog." -replace "([^ .]{4,})", "[`$1]"
The [quick] [brown] fox [jumped] [over] the [lazy] dog.
731デフォルトの名無しさん
2019/06/24(月) 19:42:19.51ID:hXFbATXB シェルスクリプトでは、コマンドが別途必要ということからくる互換性を考えると、
各種スプリクト言語(公式バイナリ添付の標準モジュール)という選択にも理由があるわな。
単純なテキストのハンドリング程度なら、必要なコマンドがないなんてことはないから問題ないだろうけど。
各種スプリクト言語(公式バイナリ添付の標準モジュール)という選択にも理由があるわな。
単純なテキストのハンドリング程度なら、必要なコマンドがないなんてことはないから問題ないだろうけど。
732デフォルトの名無しさん
2019/06/24(月) 19:44:29.99ID:hXFbATXB > スプリクト
自分でこれ何?とか思ったわw
自分でこれ何?とか思ったわw
733デフォルトの名無しさん
2019/06/24(月) 19:52:23.47ID:DDT4XoH6 バッド・スプリクト
734デフォルトの名無しさん
2019/06/24(月) 20:10:18.30ID:SYnG+fYe735デフォルトの名無しさん
2019/06/24(月) 20:16:04.28ID:yIlGaHve ぼくなんてほかのひとに仕事取られないように超絶技巧スクリプト作ってるぜ?
736デフォルトの名無しさん
2019/06/24(月) 20:20:52.93ID:SYnG+fYe >>735
どんなの?みてみたい
どんなの?みてみたい
737デフォルトの名無しさん
2019/06/24(月) 20:53:55.73ID:Ih+U6NjR こうしてメンテ不能なものが増えていく
そういうのは個人の趣味でやってくれ
そういうのは個人の趣味でやってくれ
738デフォルトの名無しさん
2019/06/24(月) 21:07:51.65ID:4+LiJo6+ sed 's/ /_/g' の空白を強調するために
sed 's{ }{_}g' と書いたら通らなかったので
perl -pe 's{ }{_}g' にした
sed 's{ }{_}g' と書いたら通らなかったので
perl -pe 's{ }{_}g' にした
739デフォルトの名無しさん
2019/06/24(月) 22:00:43.72ID:qnOmIbRW 「コマンドを別途用意する必要がある」からシェルスクリプトは不利っておかしくね?
じゃあ他のほとんどの言語でもファイルを扱うには「OSに依存したライブラリを呼ぶ必要がある」からファイルを扱うのに互換性は損われるかもしれないよね。
その点,POSIXという古くて強大な規格があるシェルスクリプトは,少なくともファイルの標準的な扱いにおいてはかなり有利だと思うわ。
ちなみにそのPOSIXが,最低限用意しなくてはいけないコマンドを規定してるから↓
http://pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.html
ここにあるコマンドは(あまりに古すぎるuu*関連とSCCS関連を除けば)ほぼどのシステムでも利用可能で,インターフェースも統一されてる。
だからPOSIXに準拠していれば,互換性の問題はかなりの部分が解消される筈。
もちろん細かい部分で非互換な挙動はあるだろうけど,それはシェルスクリプトに限った話じゃないと思う。
じゃあ他のほとんどの言語でもファイルを扱うには「OSに依存したライブラリを呼ぶ必要がある」からファイルを扱うのに互換性は損われるかもしれないよね。
その点,POSIXという古くて強大な規格があるシェルスクリプトは,少なくともファイルの標準的な扱いにおいてはかなり有利だと思うわ。
ちなみにそのPOSIXが,最低限用意しなくてはいけないコマンドを規定してるから↓
http://pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.html
ここにあるコマンドは(あまりに古すぎるuu*関連とSCCS関連を除けば)ほぼどのシステムでも利用可能で,インターフェースも統一されてる。
だからPOSIXに準拠していれば,互換性の問題はかなりの部分が解消される筈。
もちろん細かい部分で非互換な挙動はあるだろうけど,それはシェルスクリプトに限った話じゃないと思う。
740デフォルトの名無しさん
2019/06/24(月) 23:38:29.17ID:d7e7JOi5 C言語ソースの方がはるかにポータビリティが高いし対応できる人材も豊富だよな。
書くのとリビルドするのが面倒だからスクリプトを使うだけで。
書くのとリビルドするのが面倒だからスクリプトを使うだけで。
741731
2019/06/25(火) 00:46:35.21ID:U26iaC7q >>739
OSクロス環境への配慮を言い出したら、シェルスクリプトだって同じでしょう。
Windows上のWSLやCygwinなんかで、*nixと同じシェルスクリプトがそのまま実行できるというわけではないし。
あなたの言うように、上の方にもあるような、シェル同士での非互換性も見られるからねぇ。
それに、そもそも自分は、シェルスクリプトが不利だ、と言ってるわけではなく、
条件によっては各種言語のほうが選択肢になりうると言ってるだけだよ。
それこそ標準モジュールだけでできることって、結構あるからね。
まぁ、一つに絞れるなら、どれだけありがたいことか。
C言語がいまでも生き残っているのは、まさに最大公約数的な立場にあるからなんだろうな。
OSクロス環境への配慮を言い出したら、シェルスクリプトだって同じでしょう。
Windows上のWSLやCygwinなんかで、*nixと同じシェルスクリプトがそのまま実行できるというわけではないし。
あなたの言うように、上の方にもあるような、シェル同士での非互換性も見られるからねぇ。
それに、そもそも自分は、シェルスクリプトが不利だ、と言ってるわけではなく、
条件によっては各種言語のほうが選択肢になりうると言ってるだけだよ。
それこそ標準モジュールだけでできることって、結構あるからね。
まぁ、一つに絞れるなら、どれだけありがたいことか。
C言語がいまでも生き残っているのは、まさに最大公約数的な立場にあるからなんだろうな。
742デフォルトの名無しさん
2019/06/25(火) 00:57:21.48ID:5X/+rI3v でも既存のコマンドの組み合わせでできるのに
わざわざrubyとか使って書くやつがいるよね
むしろそっちのほうが多いよね
わざわざrubyとか使って書くやつがいるよね
むしろそっちのほうが多いよね
743デフォルトの名無しさん
2019/06/25(火) 01:01:17.89ID:DXMPLOPq744デフォルトの名無しさん
2019/06/25(火) 01:04:49.56ID:5X/+rI3v C言語には機種依存する部分を、C言語から排除してるから
言い換えるとC言語だけでは機種依存するするようなことは何も出来ない。
これをシェルスクリプトに置き換えると、機種依存する部分を外部コマンドに
置き換えてるから、シェルスクリプトは機種依存しないってこと
言い換えるとC言語だけでは機種依存するするようなことは何も出来ない。
これをシェルスクリプトに置き換えると、機種依存する部分を外部コマンドに
置き換えてるから、シェルスクリプトは機種依存しないってこと
745デフォルトの名無しさん
2019/06/25(火) 01:58:59.20ID:yYWVi1kF まだgrepとsedとawkの基本が使えるようになった程度だけど確かに万能感あるわ
perlも覚えるべきなんだろうがこいつは正規表現でしか出番ないわ
正規表現まで方言あると勘弁してください
perlも覚えるべきなんだろうがこいつは正規表現でしか出番ないわ
正規表現まで方言あると勘弁してください
746デフォルトの名無しさん
2019/06/25(火) 02:41:27.82ID:DXMPLOPq747デフォルトの名無しさん
2019/06/25(火) 02:42:31.60ID:5X/+rI3v Perlはプログラム言語だよ
Perlの気に入らないところは標準モジュールが
誰かが作ったライブラリを標準添付してるだけって所
だからPerlのバージョンを変えなくても標準モジュールの
バージョンが変わってしまったり、Perlのバージョンを変えると
標準添付されているモジュールが変わったりと標準が安定していない
Perlの気に入らないところは標準モジュールが
誰かが作ったライブラリを標準添付してるだけって所
だからPerlのバージョンを変えなくても標準モジュールの
バージョンが変わってしまったり、Perlのバージョンを変えると
標準添付されているモジュールが変わったりと標準が安定していない
748デフォルトの名無しさん
2019/06/25(火) 02:43:29.91ID:5X/+rI3v749デフォルトの名無しさん
2019/06/25(火) 05:16:39.60ID:DXMPLOPq >>742
これ。
これ。
750デフォルトの名無しさん
2019/06/25(火) 08:12:25.16ID:7F89fU7n awkがプログラミング言語でないとでも?
751デフォルトの名無しさん
2019/06/25(火) 19:07:36.51ID:SVEcKi8R シェルスクリプトでファイル走査して、
ディレクトリなら再起しつつ、
普通のファイルならperlでファイル開いてなんか処理する。
見たいな使い方するな。
シェルスクリプトはファイル走査が簡単、
perl等はファイルの中の処理が簡単ってイメージ。
ディレクトリなら再起しつつ、
普通のファイルならperlでファイル開いてなんか処理する。
見たいな使い方するな。
シェルスクリプトはファイル走査が簡単、
perl等はファイルの中の処理が簡単ってイメージ。
752デフォルトの名無しさん
2019/06/25(火) 20:06:41.52ID:fN+iFfQl シェルスクリプトでごりごり書いたら出力結果でるまで数十秒でるようになったんで
python で書き直したら1秒かからなかった、とかもあるしなぁ。
ヘビーなスクリプトファイル向けの、sed/awk/grep がビルトインになってるスクリプト向け bash が欲しいわ。
python で書き直したら1秒かからなかった、とかもあるしなぁ。
ヘビーなスクリプトファイル向けの、sed/awk/grep がビルトインになってるスクリプト向け bash が欲しいわ。
753デフォルトの名無しさん
2019/06/25(火) 20:10:24.39ID:Y04/VZ6Y754デフォルトの名無しさん
2019/06/25(火) 20:20:08.32ID:cs2C/fkq >>752
パターンマッチ使えよ
パターンマッチ使えよ
755デフォルトの名無しさん
2019/06/25(火) 20:23:39.41ID:Y04/VZ6Y awk の部分は cut などに分配すると並列化で早くなるかもね
https://qiita.com/8x9/items/f1156503694d3683e78d
https://qiita.com/8x9/items/f1156503694d3683e78d
■ このスレッドは過去ログ倉庫に格納されています
