トップページunix
1001コメント301KB

シェルスクリプト総合 その7

■ このスレッドは過去ログ倉庫に格納されています
0001ミスターシェル2006/09/07(木) 13:00:11
シェルスクリプトの総合スレです。
スクリプトのお勉強・自慢・腕試しなどにどうぞ。
まずは注意点、リンク、地鎮祭など(>>1-6くらい)をご覧ください。


□お約束
・特記なき場合はBourne Shell(/bin/sh)がデフォルトです。
 bash/zsh/ksh/ashなどに依存する場合は明示しましょう。
 Linuxユーザは/bin/shの正体がbashなので特に注意。
・csh/tcshのシェルスクリプトは推奨されません。
(理由は「csh-whynot」でググれ)
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。
 manや参考リンクを見ましょう。
 aproposないしはman -kでそれらしい単語による簡単な検索もできます。
・シェルスクリプトのことをシェルってゆーな
・シェルで使えるワイルドカード等は正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)

□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
 RubyやPerlの方が適した仕事には素直にそちらを使いましょう。
・知らないコマンドが出てきたらmanを引きましょう。
・思い通りに動かないときは、まずは sh -x でトレースしましょう。
0002ミスターシェル2006/09/07(木) 13:01:14
□前スレや過去スレ:
シェルスクリプト総合 その6
http://pc8.2ch.net/test/read.cgi/unix/1143302182/
シェルスクリプト総合 その5
http://pc8.2ch.net/test/read.cgi/unix/1137801629/
シェルスクリプト総合 その4
http://pc8.2ch.net/test/read.cgi/unix/1131026501/
シェルスクリプト総合 その3
http://pc8.2ch.net/test/read.cgi/unix/1124889646/
シェルスクリプト総合 その2
http://pc8.2ch.net/test/read.cgi/unix/1113664637/
シェルスクリプト総合 その1
http://pc8.2ch.net/test/read.cgi/unix/1101820646/

□関連スレ:
sed
http://pc8.2ch.net/test/read.cgi/unix/1085730992/
正規表現
http://pc8.2ch.net/test/read.cgi/unix/1039165754/
おまえら! shell は何を使っているんですか?
http://pc8.2ch.net/test/read.cgi/unix/1012330865/
Eshell の使い方とか設定とか【Emacs Shell、Lisp】
http://pc8.2ch.net/test/read.cgi/unix/1102921590/

□他板の関連スレ:
【sed】シェルスクリプト総合@LINUX Part2【awk】
http://pc8.2ch.net/test/read.cgi/linux/1154578200/
【Shell】どのシェル使ってる?【Script】
http://pc8.2ch.net/test/read.cgi/linux/1067330754/
0003ミスターシェル2006/09/07(木) 13:02:10
□初心者向けリンク
「誰にでも」シリーズ
ttp://kanji.zinbun.kyoto-u.ac.jp/~yasuoka/publications/dareUni/
/bin/shプログラミング入門
ttp://freebooks.info.nara-k.ac.jp/archive/ShellProgramming/
シェルを使おう - 導入からプログラミングまで -
ttp://www.netfort.gr.jp/~tomokuni/lms/shell/text/

□入門者向け書籍:
プロフェショナルシェルプログラミング
http://www.amazon.co.jp/exec/obidos/ASIN/4756116329/
入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界
http://www.amazon.co.jp/exec/obidos/ASIN/4797321946/
UNIXシェルプログラミング徹底解説
http://www.amazon.co.jp/exec/obidos/ASIN/4822280489/
入門Kornシェル
http://www.amazon.co.jp/exec/obidos/ASIN/4873110149/
入門bash
http://www.amazon.co.jp/exec/obidos/ASIN/4900900788/

□参考リンク:
UNIXの部屋 (沢山のコマンドの簡単な紹介など)
http://x68000.q-e-d.net/~68user/unix/
POSIX: Shell & Utilities (標準規格)
http://www.opengroup.org/onlinepubs/009695399/utilities/contents.html
0004ミスターシェル2006/09/07(木) 13:03:23
□最近のシェルスクリプト本(1)

(2004/03) UNIXシェルスクリプトハンドブック 関根 達夫 (著)
http://amazon.co.jp/o/ASIN/4797326522/

(2004/10) UNIXシェルスクリプト逆引き大全333の極意 中橋 一朗 (著)
http://amazon.co.jp/o/ASIN/4798008842/

(2004/11) 仕事に使えるLinuxシェルスクリプト 千葉 真人 (著)
http://amazon.co.jp/o/ASIN/4822282090/

(2004/12) UNIXシェルスクリプトサンプルブック デイブ・テイラー (著)
http://amazon.co.jp/o/ASIN/4797327286/

(2005/02) シェルスクリプト基本リファレンス 山森 丈範 (著)
http://amazon.co.jp/o/ASIN/4774122610/

(2005/04) LinuxWorldスクリプト 月刊リナックス・ワールド総集編 月刊LinuxWorld特別 (著)
http://amazon.co.jp/o/ASIN/4872802349/

(2005/05) UNIXシェルスクリプトコマンドブック 山下 哲典 (著)
http://amazon.co.jp/o/ASIN/4797330635/

(2005/05) わかる&使える UNIX基礎講座 シェルスクリプト編 中井 獏 (著)
http://amazon.co.jp/o/ASIN/4774123625/
0005ミスターシェル2006/09/07(木) 13:06:03
□関連書籍と関連リンク:

FreeBSD Hypertext Man Pages
http://www.freebsd.org/cgi/man.cgi

Linux JF (Japanese FAQ) Project.
http://www.linux.or.jp/JF/

Unix Programming Frequently Asked Questions 日本語訳
http://www.adl.nii.ac.jp/~moro/unix-programmer/faq-j_toc.html

UNIXプログラミング環境
http://www.amazon.co.jp/exec/obidos/ASIN/4871483517/
0006ミスターシェル2006/09/07(木) 13:07:12
□人間初心者へのお願い:
・このスレはシェルスクリプトについてのスレです。
 シェルの対話的な利用についての話やスクリプトと関係ないコマンドの
 使い方の質問などはスレ違いなので無用に願います。

□シェルスクリプトでよく使うコマンド:
制御・条件判定系: [,test,expr,true,false,yes,getopts

テキスト処理系: cat,awk,sed,tr,sort,uniq,grep,wc,head,tail,cut,paste,comm,join

ファイル検索系: find,xargs
(スペースなどを含むファイル名を正しく処理するため、
findは -print0、xargsは -0オプションを常に付けることを推奨
ただし、Solarisでは未対応。どうするんだろ?)

ディレクトリ系: basename,dirname
出力系: echo,printf
対話コマンド制御系: expect
http/ftpの処理自動化: wget,curl

テンプレは以上です。引き続きよろしくお願いします。
0007名無しさん@お腹いっぱい。2006/09/07(木) 13:11:37
>>1
スレ立て乙です。
0008名無しさん@お腹いっぱい。2006/09/07(木) 15:48:22
うむッ
0009質問2006/09/07(木) 17:25:28
お願いします。

awkの中で変数を使いたいんですが出来ません。
例えば

#!/bin/sh
a=xyz
awk '/^${a}/{print $2}' abc


行き詰まってしましました。
解決策を教えてください。
0010名無しさん@お腹いっぱい。2006/09/07(木) 17:36:00
>>9
awk '/^'"${a}"'/{print '"$2"'}' abc
0011名無しさん@お腹いっぱい。2006/09/07(木) 17:38:38
>>10
$2 は awk側の変数だろ。

awk '/^'"${a}"'/{print $2}' abc
0012名無しさん@お腹いっぱい。2006/09/07(木) 17:48:58
>>9
せっかくシェルスレなんだからawk何か使わずに
シェルだけでやれ。


#!/bin/sh

a=xyz
while read f1 f2 f3
do
case "$f1" in
"$a"*) echo "$f2";;
esac
done < abc
0013名無しさん@お腹いっぱい。2006/09/08(金) 01:47:20
>12
前スレから見てるけど、改良や改善などの挙げ句どのみち何らかの
スクリプト言語になっちまうのは、避けられない宿命っぽいよ。
0014名無しさん@お腹いっぱい。2006/09/08(金) 01:57:38
awkまではセーフ。
0015名無しさん@お腹いっぱい。2006/09/08(金) 03:53:42
sedも含めてあげようじゃないか
0016名無しさん@お腹いっぱい。2006/09/08(金) 16:10:48
whoamiもOK
0017名無しさん@お腹いっぱい。2006/09/08(金) 16:20:30
>>16
つながりがよくわからんが、Solarisにはwhoamiコマンドが無かった希ガス。
0018名無しさん@お腹いっぱい。2006/09/08(金) 16:30:26
なかったらどうだと言うんだ。
0019名無しさん@お腹いっぱい。2006/09/08(金) 16:33:49
なかったらOKとは言えないだろ。
0020名無しさん@お腹いっぱい。2006/09/08(金) 16:47:14
Solarisにない物は不可。
0021名無しさん@お腹いっぱい。2006/09/08(金) 17:22:09
Solarisにある物は可。
0022名無しさん@お腹いっぱい。2006/09/08(金) 17:35:35
>17
whoamiは
sunOS 5.7には無かった
sunOS 5.9には有った

who am i
はどちらでも使える。

5.8は使ってないからわからん。
0023名無しさん@お腹いっぱい。2006/09/08(金) 17:38:02
whoami と who am i は意味が違うわけだが。
su して who am i しても、su前の一般ユーザーが表示されるはず。
0024名無しさん@お腹いっぱい。2006/09/08(金) 17:43:54
>23
いや それはもちろんわかってるって w
ネタとして遊んで欲しかった・・・
0025名無しさん@お腹いっぱい。2006/09/08(金) 18:38:36
#!/bin/sh
ps u | awk '$2 == '`echo $$`' {print $1}'
0026名無しさん@お腹いっぱい。2006/09/08(金) 18:40:35
>>25
echoが無駄です。$$ だけで桶。
0027名無しさん@お腹いっぱい。2006/09/08(金) 18:46:46
シェルでやるならこうか

ps u | while read f1 f2 f3; do case $$ in $f2) echo "$f1";; esac; done
0028名無しさん@お腹いっぱい。2006/09/08(金) 18:53:12
ps -o user | tail -1
■ このスレッドは過去ログ倉庫に格納されています