シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
前スレ: シェルスクリプト総合 その27(https://mevius.5ch.net/test/read.cgi/unix/1525337663/)
探検
シェルスクリプト総合 その28
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2018/07/24(火) 11:01:16.36ID:r0TJj2hB2018/07/24(火) 11:01:46.51ID:r0TJj2hB
お約束
・特記なき場合、Bourne ShellもしくはPOSIX準拠のsh可換シェルが既定です
つまりシバンは#! /bin/shです。
他のシェル(bash, zsh, ksh, (d)ash, yash, posh, fish, (t)csh)などの専用機能に依存する場合は明示しましょう。
OS X, 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なので注意。
csh/tcshでのシェルスクリプトは*まったく推奨しません*。
(参考URL: http://www.speech-lab.org/~hiroki/csh-whynot.euc)
・POSIXに準拠しましょう
有用なリンクはhttps://en.wikipedia.org/wiki/POSIXにまとめられています。
最新の仕様はこちらへ: http://pubs.opengroup.org/onlinepubs/9699919799/
(左上の「Shell & Utilities」から各コマンドやファイルの仕様を参照することができます)
・Version 7 UNIXのsh(1)に一番近いのはOpenSolaris由来のHeirloom sh、次点でDebianなどに搭載されているDash shell
Heirloom sh: http://heirloom.sourceforge.net/sh.html
Dash shell: http://gondor.apana.org.au/~herbert/dash/
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります
Manページや各種リンク(http://pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.htmlなど)を見ましょう。
apropos(1)ないしはman(1)の-kオプションでそれらしい単語による簡単な検索もできます。
・ワイルドカードは正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆうな
・特記なき場合、Bourne ShellもしくはPOSIX準拠のsh可換シェルが既定です
つまりシバンは#! /bin/shです。
他のシェル(bash, zsh, ksh, (d)ash, yash, posh, fish, (t)csh)などの専用機能に依存する場合は明示しましょう。
OS X, 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なので注意。
csh/tcshでのシェルスクリプトは*まったく推奨しません*。
(参考URL: http://www.speech-lab.org/~hiroki/csh-whynot.euc)
・POSIXに準拠しましょう
有用なリンクはhttps://en.wikipedia.org/wiki/POSIXにまとめられています。
最新の仕様はこちらへ: http://pubs.opengroup.org/onlinepubs/9699919799/
(左上の「Shell & Utilities」から各コマンドやファイルの仕様を参照することができます)
・Version 7 UNIXのsh(1)に一番近いのはOpenSolaris由来のHeirloom sh、次点でDebianなどに搭載されているDash shell
Heirloom sh: http://heirloom.sourceforge.net/sh.html
Dash shell: http://gondor.apana.org.au/~herbert/dash/
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります
Manページや各種リンク(http://pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.htmlなど)を見ましょう。
apropos(1)ないしはman(1)の-kオプションでそれらしい単語による簡単な検索もできます。
・ワイルドカードは正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆうな
2018/07/24(火) 11:02:04.48ID:r0TJj2hB
初心者へのアドバイス
・適した道具を判断するのも頭の重要な使い方。
シェルスクリプトよりもPerlまたはPythonの方が適した処理にはそちらを使いましょう。
・知らないコマンドが出てきたらman(1)を引きましょう。
・思い通りに動かないときは、まずはsh(1)の-xオプションでトレースしましょう。
回答者への注意事項
・相手がシェルスクリプトでの処理方法を質問しているのにもかかわらず、よく知りもせずに、「そういうのはPerl, Python使え」と回答するのはやめましょう。
安易にPerlやPythonに逃げずに小さなコマンドを組み合わせシェルスクリプトで処理するのが頭のいいやり方。
・質問に対して問題が間違ってるといちゃもんをつけるのも避けましょう。
・適した道具を判断するのも頭の重要な使い方。
シェルスクリプトよりもPerlまたはPythonの方が適した処理にはそちらを使いましょう。
・知らないコマンドが出てきたらman(1)を引きましょう。
・思い通りに動かないときは、まずはsh(1)の-xオプションでトレースしましょう。
回答者への注意事項
・相手がシェルスクリプトでの処理方法を質問しているのにもかかわらず、よく知りもせずに、「そういうのはPerl, Python使え」と回答するのはやめましょう。
安易にPerlやPythonに逃げずに小さなコマンドを組み合わせシェルスクリプトで処理するのが頭のいいやり方。
・質問に対して問題が間違ってるといちゃもんをつけるのも避けましょう。
2018/07/24(火) 11:05:09.89ID:r0TJj2hB
補足(今スレ限り)
いままではUNIX板でスレ立てをしていましたが、IDやワッチョイが無いことを理由とした自演・荒しが目立ってきておりスレがまともに機能しなくなりかけているので、今回よりプログラム板に移動することになりました。
いままではUNIX板でスレ立てをしていましたが、IDやワッチョイが無いことを理由とした自演・荒しが目立ってきておりスレがまともに機能しなくなりかけているので、今回よりプログラム板に移動することになりました。
2018/07/24(火) 14:22:58.96ID:r0TJj2hB
とりあえず保守っぽい書き込み
2018/07/24(火) 15:29:38.59ID:4yafhCFC
おつ
2018/07/24(火) 15:31:12.93ID:ux1Ayazo
り返せ
2018/07/24(火) 16:40:14.98ID:PsBikv9p
ません
2018/07/24(火) 16:45:11.85ID:dOWUO1eS
m9
2018/07/24(火) 20:36:43.40ID:0V9luMBh
>>1
スレ立て乙!111
スレ立て乙!111
2018/07/24(火) 21:04:07.46ID:ux1Ayazo
112
2018/07/24(火) 22:37:58.80ID:ukUjoRN2
>1 乙
支援
支援
2018/07/25(水) 01:58:18.49ID:41CwtA3+
乙なんよ
2018/07/25(水) 02:54:55.73ID:7zvfAEGp
テンプレの↓
> 自覚なきbashism---シバンが#!/bin/shなのにbashに依存する構文を使っていませんか?
ちょっと痛いかな
> 自覚なきbashism---シバンが#!/bin/shなのにbashに依存する構文を使っていませんか?
ちょっと痛いかな
2018/07/25(水) 03:03:02.74ID:JJXqrWB8
bashのあれやこれは、shでどうかけばいいかってのがあるといいな
特に配列。配列は引数として処理するんだよっていうのが体系的にまとまるといいな
特に配列。配列は引数として処理するんだよっていうのが体系的にまとまるといいな
2018/07/25(水) 08:44:11.14ID:go981At1
本来の引数配列以外で配列が必要になったら、基本的にはawkその他の言語使うなあ。
まあ自分用だと気の迷いで引数配列転用したり、evalで頑張ったりすることもあるけど、
仕事で他の人に引き継ぐこと考えると保守性で問題になるので
仕事ではやらないようにしてる。
まあ自分用だと気の迷いで引数配列転用したり、evalで頑張ったりすることもあるけど、
仕事で他の人に引き継ぐこと考えると保守性で問題になるので
仕事ではやらないようにしてる。
2018/07/25(水) 15:17:48.54ID:JJXqrWB8
>>16
配列が必要になるっていうのは、シェルスクリプトの
プログラミングの仕方が間違えてるってことだよ
例えて言うならば、関数型言語をオブジェクト指向言語的に
使って、オブジェクト使いたい。インスタンス作りたい
メソッド作りたい、継承、カプセル化欲しい!って言うようなもん
シェルスクリプトは引数または標準入力で渡されたものを
順次処理していくという書き方をするもんなんだろう。
一時的に変数にためておくなんてことはしないので
配列は使わないですむ
配列が必要になるっていうのは、シェルスクリプトの
プログラミングの仕方が間違えてるってことだよ
例えて言うならば、関数型言語をオブジェクト指向言語的に
使って、オブジェクト使いたい。インスタンス作りたい
メソッド作りたい、継承、カプセル化欲しい!って言うようなもん
シェルスクリプトは引数または標準入力で渡されたものを
順次処理していくという書き方をするもんなんだろう。
一時的に変数にためておくなんてことはしないので
配列は使わないですむ
2018/07/25(水) 15:24:58.23ID:eezz2RvW
evalだけは怖いから使わない
それでしか解決できない問題をまだ扱った事がないからだが
それでしか解決できない問題をまだ扱った事がないからだが
2018/07/25(水) 15:32:42.01ID:JJXqrWB8
evalは信頼できない文字をevalするのが問題なのであって
コードの中で作り出した文字をevalするなら問題もないんだよ
信頼できない文字であっても、使える文字種を限定すればいいし
コードの中で作り出した文字をevalするなら問題もないんだよ
信頼できない文字であっても、使える文字種を限定すればいいし
2018/07/25(水) 17:47:06.73ID:7zvfAEGp
あるリモートファイルの最新のバージョンをダウンロードする方法ってありますか。
具体的にはhttp://ftp.jaist.ac.jp/pub/GNU/gnuzilla/←ここの最新バージョンのディレクトリを知りたいです。
具体的にはhttp://ftp.jaist.ac.jp/pub/GNU/gnuzilla/←ここの最新バージョンのディレクトリを知りたいです。
2018/07/25(水) 17:59:04.34ID:DddK84yb
ある
2018/07/25(水) 21:12:21.99ID:l3Vcc9bz
2018/07/25(水) 21:32:58.42ID:tKZkTFhc
極端な例を挙げるなら、行列演算をシェルスクリプトで書く馬鹿はいないみたいな話よ。
配列に限った話ではなく、ほとんど全ての高級言語にあるのにシェルにはない言語機能がいろいろある。
例えば構造体に類する機能とか、参照とか。
言語には向き不向きがあって、シェルでは向いてない用途に無理矢理使うのは井の中の蛙。
配列に限った話ではなく、ほとんど全ての高級言語にあるのにシェルにはない言語機能がいろいろある。
例えば構造体に類する機能とか、参照とか。
言語には向き不向きがあって、シェルでは向いてない用途に無理矢理使うのは井の中の蛙。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 ★2 [蚤の市★]
- トランプ大統領 エヌビディア製AI半導体の中国輸出許可 安全保障重視の方針転換 [蚤の市★]
- JAが"政府の備蓄米買い上げ"見越して価格下げず!?「古いコメは食用向きでないなどと理由をつけ...」専門家解説 [煮卵★]
- 【広島】「万引きした人を追跡」コンビニ店員の男性(46)を果物ナイフで刺したか 中国籍の少年(17)を殺人未遂容疑で現行犯逮捕 [ぐれ★]
- 【結婚の壁】結婚どころか今まで恋愛経験は一切ない人も…「年収500万の壁」を突破できない中間層の苦しい現実 [ぐれ★]
- 【地震】青森県で震度6強 長周期地震動も 津波注意報すべて解除 ★7 [ぐれ★] [ぐれ★]
- 本当の問題は高市がバカなことじゃなくて高市みたいなバカを支持するバカが大量にいることだよな [314039747]
- 【高市悲報】レーダー照射で日本が喧嘩売ってる中、アメリカ軍「我々はパールハーバーを忘れない」と日本に向けてポストへ [709039863]
- 高市首相「自らの命は自らが守るという原則で、行動とっていただきたい」 [256556981]
- メモリ不足、ジャガイモ農家が原因だった [422186189]
- 【ひまわり内閣】ネトウヨ「国会に高市さんが封筒と書類の束持ち込んでる!🤩用意周到!すごい!」6万いいね [359965264]
- ゲソ専門店『あしざんまい』を開こうと思うのだが
