[過去ログ] シェルスクリプト総合 その31 (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
1(3): デフォルトの名無しさん [sage] 2019/08/10(土) 23:17:50.64 ID:L+B8OP2P(1/5) AAS
シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。
シェルスクリプト総合 その30
2chスレ:tech
2(3): デフォルトの名無しさん [sage] 2019/08/10(土) 23:19:50.86 ID:L+B8OP2P(2/5) AAS
お約束
・特記なき場合、POSIX 準拠の sh 可換シェルが既定です。(Bourne Shellは既にレガシーです)
つまりシバンは #!/bin/sh です。
特定のシェル(bash, zsh, (m|pd)ksh, (d)ash, yash, posh, fish, (t)csh など)の専用機能に依存する場合は明示しましょう。
macOS (10.14以前), GNU/Linux ユーザー(Debian, Ubuntu 系以外) は /bin/sh の実体が bash なので*特に*注意
自覚なき bashism---シバンが #!/bin/sh なのに bash に依存する構文を使っていませんか?
ただし Debian, Ubuntu などでは /bin/sh の実体は POSIX sh 互換の dash ですのであまり気にしないでも大丈夫です。
FreeBSD ユーザーは /bin/sh の実体が ash なので注意。
Solaris, OpenBSD ユーザーは /bin/sh の実体が ksh なので注意。
macOS 10.15以降のユーザーは/bin/sh の実体が zsh なので注意。
android ユーザーは /bin/sh の実体が mksh なので注意。
csh/tcshでのシェルスクリプトは*まったく推奨しません*。
(参考URL: 外部リンク[euc]:www.speech-lab.org)
・POSIX に準拠しましょう
有用なリンクは 外部リンク:en.wikipedia.org にまとめられています。
最新の仕様はこちらへ: 外部リンク:pubs.opengroup.org
(左上の「Shell & Utilities」から各コマンドやファイルの仕様を参照することができます)
・Version 7 UNIX の sh(1) に一番近いのは OpenSolaris 由来の Heirloom sh、次点で Debian などに搭載されている Dash shell
Heirloom sh: 外部リンク[html]:heirloom.sourceforge.net
Dash shell: 外部リンク:gondor.apana.org.au
・UNIX にはシェルスクリプトに便利な小さなコマンドがいろいろあります
Man ページや各種リンク(外部リンク[html]:pubs.opengroup.orgなど)を見ましょう。
apropos(1) ないしは man(1) の-kオプションでそれらしい単語による簡単な検索もできます。
・ワイルドカードは正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆうな
31(3): デフォルトの名無しさん [sage] 2019/08/11(日) 18:24:50.03 ID:k+c7cOcw(1/23) AAS
ええぇ、自分でMacもって言ってなかったかな?
元レスの人のがが何かはわからないが、その可能性はなくもない、だったらの話だが
エアプで見栄であれもこれもと羅列しただけ?w
149(3): デフォルトの名無しさん [sage] 2019/08/19(月) 17:39:47.54 ID:xlQPwL5+(5/7) AAS
・POSIXに準拠することにはメリットがある
↑これは俺もそう思うけど(正しいかどうかは別にして)
・今のPOSIXでは不十分なので,規格を拡張して,各社にそれを追従するよう促すべきだ
↑これは違うと思う。POSIXの「不便さ」は「どこでも動く」ことの引き換えであることを忘れてはいけいない(ルポ風)
154(3): デフォルトの名無しさん [sage] 2019/08/19(月) 20:19:55.37 ID:WiF5XT2w(1/3) AAS
bashで長いシェル書いてるといつもたくさんファイルを生成してしまうんだが上手い具合に生成しなくて済む方法ってある?
187(3): デフォルトの名無しさん [sage] 2019/08/20(火) 17:57:11.37 ID:Gkd3xMH4(4/11) AAS
無知ですまんがAWKおじさんってだれ?
なんか否定的な書き方だけど悪名高いコテハン?
204(3): デフォルトの名無しさん [sage] 2019/08/20(火) 21:24:50.14 ID:Gkd3xMH4(10/11) AAS
sortの話はもう終わったでしょ、お爺ちゃん。
217(3): デフォルトの名無しさん [sage] 2019/08/21(水) 12:37:03.95 ID:+hDHTeft(1) AAS
bashしか使わない人がbash依存して何か問題あるのかね
シェルに限らずLinuxしか使わない人が「Windowsでも動く」プログラムを書く必要はないし
(シェアの低い変なコンピュータ使ってる人はその人だけ苦労すればいい)
256(3): デフォルトの名無しさん [sage] 2019/08/21(水) 16:35:44.19 ID:MMv7CGOe(1/4) AAS
初めて触れたRH8も、Cygwinもbashだったから、
今でもふつうにbash使ってるな。
それにしても、bashはなんでこんなに嫌われてるんだ?w
257(3): デフォルトの名無しさん [sage] 2019/08/21(水) 16:44:32.20 ID:MKRUgKM/(1) AAS
ま、bashがデフォルトシェルじゃないOSもそれなりにあるもんな
361(3): デフォルトの名無しさん [sage] 2019/08/25(日) 02:30:04.13 ID:RhAWwavs(1/2) AAS
再掲してやろうw
> From: [36] デフォルトの名無しさん <sage>
> Date: 2019/08/11(日) 16:10:55.15 ID:++HFlOfG
>
> 現実世界では私は神なのだ
さっさとsortコマンドの話に答えろよw
480(4): デフォルトの名無しさん [sage] 2019/09/01(日) 00:08:11.60 ID:1i1y7fC5(1) AAS
POSIXって右と左で中身がガバガバだから作られた最低限の共通仕様じゃないのか
無人島じゃ家電は役立たずでもアーミーナイフならどこでも使える的な
546(4): デフォルトの名無しさん [sage] 2019/09/02(月) 06:47:31.22 ID:mejwNGsW(1/3) AAS
こんな場末のスレで煽りしか入れられないなんて,かわいそう。
612(4): デフォルトの名無しさん [sage] 2019/09/13(金) 17:57:13.42 ID:DBJTu1IU(1) AAS
bashのプロセス置換機能を活用して、シェル作業やスクリプト書きを効率化する
外部リンク:sechiro.hatenblog.com
そのスクリプトの出処はここだな
出力のプロレス置換ってこう使うのか
入力のプロセス置換はよく使ってるけどそっちはどうもな
718(4): デフォルトの名無しさん [sage] 2019/10/01(火) 19:26:55.18 ID:8eIOCDAd(5/18) AAS
>>716716(1): デフォルトの名無しさん [sage] 2019/10/01(火) 19:16:54.12 ID:fust4gpU(1/9) AAS
>>709
forkだよ。$( ) の部分がサブシェルになってて
多くのシェルではサブシェル = 別プロセス生成で実装されてる。
そのおかげでサブシェルの中でcdを実行したり変数を使ったりしても
呼び出し元は汚染されたりしない
kshはサブシェルの実装が最適化されていて
全てではないが、サブシェルの部分を同一プロセスで実行する。
独自で状態の保存と復帰を実装してるのだろう。
外部リンク[html]:codeday.me
kshは速いと言っちゃ速いんだが、その(複雑な?)仕組みのせいで
バグのもとになってたりする。ということを書いてあるページが
有ったんだがどこか忘れた。
内部関数なのにってとこがね&普通の他の言語とはやはり違うな(まあ当然だが)という(内部汚染とかこれの本題ではないっすよ)
zshはkshを習ってだけど、ちょこちょこ習えてないなあ。kshの否定面のレスだけど、kshは人に優しいとこもあるとも思うw
a=0
ls | while read line; do
[ "$line" = 'hoge' ] && a=1
done
[ a -eq 1 ] && ...
っていう見た目他の言語的では当たり前のがちゃんと動くというwまあ、異端だけど
とりあえず、どうしようもないそういうものということでいいのね。どうも
743(3): デフォルトの名無しさん [sage] 2019/10/01(火) 23:53:15.78 ID:8eIOCDAd(17/18) AAS
return
なんすけど。returnの意味知ってる?とかいう。いや、しつれい
エラー情報でもない、単なる終了ステータス。exit ではないのは、まあ、関数だからと、exit と区別がつかないからかなw
744(3): デフォルトの名無しさん [sage] 2019/10/01(火) 23:59:02.30 ID:8eIOCDAd(18/18) AAS
function name () { }
が、POSIXではないのは(これからも採用されないかも?採用するの?)というのは、関数じゃねえー、所詮コマンドだなというとこかなと思ったりしてみたり、今回w
>>742742(2): デフォルトの名無しさん [sage] 2019/10/01(火) 23:35:42.98 ID:DttT1lmW(2/2) AAS
パイプで処理をつなげていくシェルスクリプトにおいて
返り値=出力なんだよ
出力を読み取って、処理して出力する
そういう基本がわかってないだけ
そのレベルで馬鹿にできるのはあなたがそのレベルと言っているようなもんかなとw
てか、return なのにそれを返り値と見るのを頭から否定するのは、いままでの同一人物としか思えないんだけど。シェルスクリプトは知っているがシェルスクリプトしか知らないシェルスクリプトにだけ拘るw
818(4): デフォルトの名無しさん [sage] 2019/10/03(木) 23:43:58.79 ID:6kVVAM38(1) AAS
簡単なシェルスクリプトしか書けんが何が覚えとけって言語ある?
s以外のsedの機能をようやく覚えたけどコマンドは文字列操作系で手一杯だわ
やっぱりperlの呪文覚えるしかないか
975(3): デフォルトの名無しさん [sage] 2019/10/26(土) 11:29:02.54 ID:3fttRo5u(5/9) AAS
質問が出てる時点で、意図がわからないコードってことなんだがw
957 名前:デフォルトの名無しさん[sage] 投稿日:2019/10/24(木) 17:49:17.77 ID:mthfJT/n [2/3]
>>954954(2): デフォルトの名無しさん [sage] 2019/10/23(水) 10:43:57.77 ID:oiOUCahJ(1) AAS
TRUE=$([ 0 = 0 ];echo $?)
FALSE=$([ ! $TRUE ];echo $?)
FLAG=$TRUE or $FALSE
それってTRUE=0とするのと何が違うの?
それに>>954ののコードは、set -eで正しく動かない
TRUE=$([ 0 = 0 ];echo $?)
FALSE=$([ ! $TRUE ];echo $?)
意図が不明確なコードを書いて、バグを入れるのは
アホでしか無いよ
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.057s