シェルスクリプト総合 その21
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001名無しさん@お腹いっぱい。
2012/11/15(木) 18:57:33.11□お約束
・特記なき場合はBourne Shell(/bin/sh)がデフォルトです。
bash/zsh/ksh/ashなどに依存する場合は明示しましょう。
Linuxユーザは/bin/shの正体がbashまたはdashなので特に注意。
FreeBSDユーザは/bin/shの正体がashなので注意。
v7 shに一番近くて、現役のshは、OpenSolaris由来のheirloom sh。
http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/sh/
http://heirloom.sourceforge.net/sh.html
・csh/tcshのシェルスクリプトは推奨されません。
(理由は「csh-whynot」でググれ)
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。
manや参考リンクを見ましょう。
aproposないしはman -kでそれらしい単語による簡単な検索もできます。
・シェルで使えるワイルドカード等は正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆーな
□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
awkまたはperlの方が適した処理にはそちらを使いましょう。
・知らないコマンドが出てきたらmanを引きましょう。
・思い通りに動かないときは、まずは sh -x でトレースしましょう。
□回答者への注意事項:
・シェルスクリプトでの処理方法を質問しているのに、よくわからずに
「そういうのはperl使いましょう」と回答するのはやめましょう。
安易にperlに逃げずにシェルスクリプトで処理するのが頭のいいやり方。
前スレ
シェルスクリプト総合 その20
http://toro.2ch.net/test/read.cgi/unix/1339083351/
0956名無しさん@お腹いっぱい。
2013/10/28(月) 20:20:09.08clone
0957名無しさん@お腹いっぱい。
2013/10/28(月) 21:13:14.15forkじゃなくてsetsidができるかどうかじゃないの?
0958名無しさん@お腹いっぱい。
2013/10/28(月) 23:38:12.10そもそも質問者が言うforkが何を指しているのか分からん
エスパー待ち
0959名無しさん@お腹いっぱい。
2013/10/28(月) 23:43:57.160960名無しさん@お腹いっぱい。
2013/10/28(月) 23:51:19.29sh関数をバッググランド実行すると親プロセスとは別のプロセスグループに設定されてから実行されるから、
fork()じゃないと言いたいわけね?
日本語不自由すぎだろw
0961名無しさん@お腹いっぱい。
2013/10/29(火) 08:45:24.15甘やかすな
0962名無しさん@お腹いっぱい。
2013/10/29(火) 09:40:23.28要するに初めに覚えた言語の関数じゃないと理解できないただのアホ
裏で動いてる本質的な処理が全く分かってない
0963名無しさん@お腹いっぱい。
2013/10/29(火) 09:58:38.32プリミティブとしてのforkが欲しかったんじゃないの?
その方が細かい制御ができる場合もあるし。
もちろんCのfork()しか理解してないという可能性も高いけど。
0964名無しさん@お腹いっぱい。
2013/10/29(火) 10:40:09.560965名無しさん@お腹いっぱい。
2013/10/29(火) 12:23:39.690966名無しさん@お腹いっぱい。
2013/10/29(火) 14:01:49.81rfork
0967名無しさん@お腹いっぱい。
2013/10/29(火) 14:39:31.730968名無しさん@お腹いっぱい。
2013/10/29(火) 16:04:45.350969名無しさん@お腹いっぱい。
2013/10/29(火) 16:20:49.30関数を呼んだり、コマンドを実行したりせずに、ということなら
無いんじゃないか。
0970名無しさん@お腹いっぱい。
2013/10/29(火) 16:37:25.490971921
2013/10/29(火) 19:39:57.670972名無しさん@お腹いっぱい。
2013/10/29(火) 21:08:55.090973名無しさん@お腹いっぱい。
2013/10/29(火) 21:39:12.02breakつかうと上のfor文抜けちゃうので
どうしたらいいか よいアイデアを 出すのだ
0974名無しさん@お腹いっぱい。
2013/10/29(火) 21:40:59.800975名無しさん@お腹いっぱい。
2013/10/29(火) 21:55:13.390976名無しさん@お腹いっぱい。
2013/10/29(火) 21:58:12.020977名無しさん@お腹いっぱい。
2013/10/30(水) 07:59:22.950978名無しさん@お腹いっぱい。
2013/10/30(水) 14:04:29.640979名無しさん@お腹いっぱい。
2013/10/30(水) 14:39:46.49case $foo in
bar) baz; if qux; then quux; fi ;;
esac
0980名無しさん@お腹いっぱい。
2013/10/30(水) 15:13:47.48ありがとう
やっぱこのダサい方法しかないか
0981名無しさん@お腹いっぱい。
2013/10/30(水) 16:16:09.22こんなのどう?
for onlyonceforbreakincase in 1; do
case $foo in
bar) baz; if qux; then break; fi; quux ;;
esac
done
0982名無しさん@お腹いっぱい。
2013/10/30(水) 17:47:57.450983名無しさん@お腹いっぱい。
2013/10/30(水) 18:11:18.13それじゃ、case文の後が実行されないだろ
0984名無しさん@お腹いっぱい。
2013/10/30(水) 22:42:14.92#!/bin/sh
LANG=C
export LANG
d=^`date "+%b %d %H:%M"`
echo $d
d=^`env TZ="JST offset 00:01" date "+%b %d %H:%M"`
echo $d
(実行結果:env TZ付きで打つと%Hがたぶん%mで出てくる)
^Oct 30 19:19
^Oct 30 10:18
dateの-vでこと無きを得たけど。
0985名無しさん@お腹いっぱい。
2013/10/30(水) 23:17:08.28Coordinated Universal Time (UTC) is used.
0987984
2013/10/31(木) 00:21:28.73TZは、UTC+15とかでフツーにhour単位でズラすのは知ってたから、勘違いした。
'offset'付けるとNGなのね。
レス数が950を超えています。1000を超えると書き込みができなくなります。