トップページunix
987コメント278KB

シェルスクリプト総合 その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/
0983名無しさん@お腹いっぱい。2013/10/30(水) 18:11:18.13
>>982
それじゃ、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.28
If TZ appears in the environment but its value is a null string,
Coordinated Universal Time (UTC) is used.
09869842013/10/31(木) 00:13:45.03
>>985
うまく書けますた。thx
アホなこと書いちゃった(^_^; 試した時期が悪かったなw
09879842013/10/31(木) 00:21:28.73
ちょっと訂正。TZでうまく(-1分の時刻を表示)書けてはいなくて、結局date -vを採用した。
TZは、UTC+15とかでフツーにhour単位でズラすのは知ってたから、勘違いした。
'offset'付けるとNGなのね。
レス数が950を超えています。1000を超えると書き込みができなくなります。