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

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

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001シェルスクリプトライター2011/12/10(土) 20:06:40.38
シェルスクリプトの総合スレです。
スクリプトのお勉強・自慢・腕試しなどにどうぞ。

□お約束
・特記なき場合はBourne Shell(/bin/sh)がデフォルトです。
 bash/zsh/ksh/ashなどに依存する場合は明示しましょう。
 Linuxユーザは/bin/shの正体がbashなので特に注意。
 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でそれらしい単語による簡単な検索もできます。
・シェルスクリプトのことをシェルってゆーな
・シェルで使えるワイルドカード等は正規表現ではありません。
 正規表現の話題はスレ違い(正規表現スレへ)

□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
 RubyやPerlの方が適した仕事には素直にそちらを使いましょう。
・知らないコマンドが出てきたらmanを引きましょう。
・思い通りに動かないときは、まずは sh -x でトレースしましょう。

前スレ
シェルスクリプト総合 その18
http://hibari.2ch.net/test/read.cgi/unix/1308195527/

次スレは >>970 で。
0894名無しさん@お腹いっぱい。2012/05/28(月) 07:42:53.98
>>893
過去の使い方でもいいので出来れば教えていただけませんか?
0895名無しさん@お腹いっぱい。2012/05/28(月) 08:17:23.20
>>892
xmodmap を実行するのにファイルを用意せずに実行する例。

xmodmap - <<EOF
remove Lock = Caps_Lock
remove Control = Control_L
keysym Control_L = Caps_Lock
keysym Caps_Lock = Control_L
add Lock = Caps_Lock
add Control = Control_L
EOF
0896名無しさん@お腹いっぱい。2012/05/28(月) 08:20:13.78
>>895
それは echoでできるので、ヒアドキュメントの有効な使い方じゃないですね。

echo 'remove Lock = Caps_Lock
remove Control = Control_L
keysym Control_L = Caps_Lock
keysym Caps_Lock = Control_L
add Lock = Caps_Lock
add Control = Control_L' | xmodmap -
0897名無しさん@お腹いっぱい。2012/05/28(月) 09:29:22.95
そりゃそうだ。
結局のところ標準入力にデータを流しこむ手段のひとつでしかないんだから、
基本的に echo や cat と変わらん。
「それは echo でできる」と言うのならぜんぶ echo でやればいいんじゃねーの?

↓は動かないけど、

date +'%Y %m %d' | read y m d

ヒアドキュメントを使った↓は動く。

read y m d<<eod
`date +'%Y %m %d'`
eod

違いなんてこの程度のものだ。
# ksh は前者も動く。
0898名無しさん@お腹いっぱい。2012/05/28(月) 09:38:26.36
>>897
それはヒヤドキュよりもeval使った方が簡単だな。

eval `date +'y=%Y m=%m d=%d'`
0899名無しさん@お腹いっぱい。2012/05/28(月) 10:39:52.02
そういう話はしてないっしょ。
0900名無しさん@お腹いっぱい。2012/05/28(月) 16:14:29.70
TEMPに書けない環境でヒアドキュメントを使ったら動かなかった。
0901名無しさん@お腹いっぱい。2012/05/28(月) 18:48:35.50
わざわざ別ファイルにする必要がない程度のリストとかエスケープ面倒な時とか便利。
大昔のUNIX プログラミング環境って本にはそんな感じで書いてあった記憶が。カーニハンとロブパイクのやつね。
0902名無しさん@お腹いっぱい。2012/05/29(火) 00:24:27.94
ピコーン
0903名無しさん@お腹いっぱい。2012/05/29(火) 06:38:30.30
ヒアドキュメントの使い方で、こんなの思い出した。
複数のスクリプトをひとまとめにして、メールで送る。受け取った側で実行すると複数のファイルの出来上がり。

cat <<EOF >file1
hogehoge
hogehoge
EOF
cat <<EOF >file2
fugafuga
fugafuga
EOF
0904名無しさん@お腹いっぱい。2012/05/29(火) 08:20:04.29
sharか。
0905名無しさん@お腹いっぱい。2012/05/29(火) 09:44:38.22
こんなのもありますが... >>897>>901で話がつきる様な気がします。
クォートを考える必要がある場合、パイプを避ける場合ですね。
ftp << EOF
yum install $1 << CONFIRM
wall <<
vi <<
一時ファイル作りますから完成時には消しますが、ブロックコメントは便利です。
: <<'#COMMENTBLOCK'
あと
exec 3<<EOF
`${command}`
EOF
としておいて、別のところで
while read line; do; done 0<&3 3<&-

>>900 ですよね。
sh -c 'lsof -a -p $$ -d0' << EOF
0906名無しさん@お腹いっぱい。2012/05/29(火) 11:43:40.34
データベースの操作とかでよく使うな。
変数の展開はしてくれるんで、別ファイルにするより便利な場面は多々ある。
0907名無しさん@お腹いっぱい。2012/05/29(火) 17:11:18.16
sharが来た!
0908名無しさん@お腹いっぱい。2012/05/29(火) 18:26:47.27
charじゃなくて?
0909名無しさん@お腹いっぱい。2012/05/29(火) 18:50:14.82
sharだよ。
http://en.wikipedia.org/wiki/Shar
0910名無しさん@お腹いっぱい。2012/05/29(火) 19:11:23.55
pidfile=${PIDFILE-/var/run/example.pid}

初めて見た書式なんだけどこれってどういう意味なんです?
0911名無しさん@お腹いっぱい。2012/05/29(火) 19:14:53.89
>>910
http://linuxjm.sourceforge.jp/html/GNU_bash/man1/bash.1.html#lbBB

PIDFILE が設定されてないときは /var/run/example.pid を使う。
0912名無しさん@お腹いっぱい。2012/05/29(火) 19:15:07.87
>>910
変数PIDFILEを展開するが、もしセットされてなかった場合はデフォルトとして /var/run/example.pid を用いる。
それを pidfileという変数に代入している。
0913名無しさん@お腹いっぱい。2012/05/29(火) 19:19:25.84
>>910
$ PAGER='less -p:-' man sh

ちゃんと man に書いてはあるんだけど、
${parameter-word} そのものについては書いてなくて、
${parameter:-word} の説明とはちょっと離れたところに
: を省略した場合の動作が書いてあるんだよな。すげー探しづらい。
0914名無しさん@お腹いっぱい。2012/05/29(火) 19:20:14.34
>>911-912
サンクス!
勉強になりますた!
09159052012/05/29(火) 20:59:15.91
訂正。
while read line; do; done 0<&3 3<&-
でなく、
while read line; do; done 0<&3
exec 3<&-
0916名無しさん@お腹いっぱい。2012/05/29(火) 21:09:48.08
記号を使った構文はぐぐりにくいしmanでも探しづらい。
0917名無しさん@お腹いっぱい。2012/05/29(火) 21:58:40.26
昔はGoogleもある程度の記号が検索できたのに
今はステマ用の単語でしか検索できない。
0918名無しさん@お腹いっぱい。2012/05/30(水) 00:16:57.10
質問させてください。

以下のような文字列があります。
文字列を見ていき、文字「@」のある無しを配列に入れていきたいのですが、何かいい方法はないでしょうか。

・文字列
 「△@△@△@△@△@△△@△」

空白(△)は文字「@」の前後に一つずつ入っています。
ただし、稀に連続で出現する場合があります。
?バイト目での「@」の出現有無を配列に格納したいです。

set -A ARRY △@△@△@△@△@△△@△
echo ${ARRY[11]}の結果で△を返したいのですが、
思い通りになりません。。。

シェルはkshです。よろしくお願いします。

0919名無しさん@お腹いっぱい。2012/05/30(水) 03:18:00.71
質問です。
あるシェルスクリプトの中に、
rm -rf -- *;
という一文が有ったのですが、
--はどういう意味が有るのでしょうか?
0920名無しさん@お腹いっぱい。2012/05/30(水) 07:34:45.47
>>919
-で始まるファイルも消すためのオプション
0921名無しさん@お腹いっぱい。2012/05/30(水) 08:19:35.68
>>919
正確にはオプションの終わりを明示する為のものなんだけど、rmの場合は*が展開された時に-から始まるファイル名をオプションと認識しないことになるから、>>920のようにはたらく。
0922名無しさん@お腹いっぱい。2012/05/30(水) 09:51:48.12
起動スクリプトを書いています
バックグラウンドで実行させる為に以下のように書きましたが
service prog start で待機状態?になってしまいうまくいきません

daemon --pidfile=${pidfile} ${prog} ${conf} &

このようなケースではどういう風に書けばよいのでしょうか?
0923名無しさん@お腹いっぱい。2012/05/30(水) 09:56:58.28
>>922
daemon(シェル関数) 通す場合は & は要らん。
& なしで勝手に(制御端末切り離して)バックグラウンドになる。
逆に & 付けると動作がおかしくなるかも。
0924名無しさん@お腹いっぱい。2012/05/30(水) 09:58:17.45
http://en.wikipedia.org/wiki/Char_Aznable
0925名無しさん@お腹いっぱい。2012/05/30(水) 10:05:26.81
>>919
man rm に載ってなかった?
0926名無しさん@お腹いっぱい。2012/05/30(水) 10:15:58.35
>>923
むむむ、それが&を抜いても制御が戻らないんです…
んー、なんでだろう
0927名無しさん@お腹いっぱい。2012/05/30(水) 16:05:48.60
>>918 いまいち言ってる事が分からないが、こんな事ですか?
その2で、sed使わないで置換できたら面白かったけど。2ch仕様の為、空白を・にしてます。
#!/bin/ksh
strings="${1:-・@・@・@・@・@・・@・}"
function・kekka・{
・・・for・((・n・=・0;・n・<・${#ARRY[@]};・n++・))・;・do
・・・・・・echo・-n・"配列${n}=${ARRY[$n]}・"
・・・done
・・・echo
}
#その1
for・((・n・=・0;・n・<・"${#strings}";・n++・))・;・do
・・・ARRY[$n]="${strings:$n:1}"
done
kekka;・echo

#その2
bufIFS=${IFS};・IFS=,
set・-A・ARRY・$(・echo・"${strings}"・|・sed・-e・'s/./&,/g'・)
IFS=${bufIFS}
kekka
09289272012/05/30(水) 19:17:37.42
bufIFS=${IFS}; IFS=,
set -A ARRY ${strings//?/${.sh.match[0]},}
IFS=${bufIFS}

0929名無しさん@お腹いっぱい。2012/05/30(水) 21:04:15.72
>>927
顔文字がいっぱい。
0930名無しさん@お腹いっぱい。2012/05/30(水) 21:55:29.14
>>920
>>921
>>925
なるほど
-fというファイルが有った場合、
rm -fだと消せないので
rm -- -fとやるんですね。
09319272012/05/30(水) 22:47:57.45
((・n・ >>928 みたいな、replace w/ back reference on expansion timeなものは、
     bash様で書けるのかと聞きたい。
+・))  kshすてき?
09329182012/05/30(水) 23:16:46.44
>>927
それです!今試したらやりたいことが出来ました。
初見の機能ばかりで、いまいち詳細はよくわかってませんが^^;
シェルを見ながら使い方を覚えてみます。ありがとうございました。
0933名無しさん@お腹いっぱい。2012/05/31(木) 02:15:46.91
教えてください。
(cd $HOME/makedir; make)
の()は前後に空白を入れたり、;を最後のコマンドに入れたりしなくていいそうです。
{ command1; command2; .....; }
の{}は前後に空白を入れなければならないし、;を最後に入れないと行けないそうです。
なんででしょうか?
0934名無しさん@お腹いっぱい。2012/05/31(木) 06:07:47.35
>>933
{と}自体がコマンドだから。
0935名無しさん@お腹いっぱい。2012/05/31(木) 07:20:21.59
厳密にはコマンドじゃないけどな。
type { してみ。
0936名無しさん@お腹いっぱい。2012/05/31(木) 10:40:58.43
コマンドだった・・・
0937名無しさん@お腹いっぱい。2012/05/31(木) 10:47:30.14
だよな。/bin/{ があるので、間違って消してはいけない。
0938名無しさん@お腹いっぱい。2012/05/31(木) 11:21:46.53
ウッソだぁ〜
09399332012/05/31(木) 22:58:07.09
type type }
} is a shell keyword
type [
[ is a shell builtin
と出ました。
{ } がコマンドに近いもので、
()が文法に近いものという事はわかったのですが、
shell keywordとshell builtinって何が違うのでしょうか?
0940名無しさん@お腹いっぱい。2012/05/31(木) 23:07:32.14
shell builtin はシェル内部のコマンド。
コマンドだから行末もしくは ; の前までで一区切り。

shell keyword は行末とか ; を越えて働く。
09419342012/06/01(金) 07:49:01.20
>>939
かわいそうになって来た。
これ読んでこい。
bash.cyberciti.biz/guide/Shell_commands
0942名無しさん@お腹いっぱい。2012/06/01(金) 07:58:45.70
>>939

>>941
リンク切れてた
tldp.org/LDP/abs/html/internal.html
0943名無しさん@お腹いっぱい。2012/06/03(日) 22:27:24.72
shの-kオプションって説明読んだだけでは分からないんだけども
どういった動きをするんですかね?
0944名無しさん@お腹いっぱい。2012/06/04(月) 06:49:51.27
>>943
printenv HOGE HOGE=boke
みたいなことができる。
0945発狂寸前のなまはげ2012/06/04(月) 09:34:49.32
$ printenv HOGE HOGE=boke
$ set -k
$ printenv HOGE HOGE=boke
boke
0946名無しさん@お腹いっぱい。2012/06/04(月) 11:26:05.97
で、どういった動きをするんですかね?
0947名無しさん@お腹いっぱい。2012/06/04(月) 13:41:09.37
>>946
>>945
0948名無しさん@お腹いっぱい。2012/06/04(月) 13:51:59.43
マニュアルが読めないやつと文章が書けないやつの筆談ってこうなるのか
0949名無しさん@お腹いっぱい。2012/06/04(月) 13:57:59.74
$ sh -k
Illegal option -k
0950名無しさん@お腹いっぱい。2012/06/04(月) 14:44:36.11
-k って初めて知ったけど ksh からの拡張なのか。
これがあるとどんなときに嬉しいんだろ?
awk -v var=value ... というコマンドが実行できなくなるとか
デメリットしか思い浮かばないんだけど。

HOGE=fuga command という構文なんぞいらん、
必要なら env HOGE=fuga command でいいじゃねーか、と思ってるぐらいなのに、
さらに拡張する意義がさっぱりわからん。
0951名無しさん@お腹いっぱい。2012/06/04(月) 17:27:54.38
>>944 で分からないなら、新しいスクリプトでの使用が(少なくともkshでは)非推奨だそうだから使わなくていいが、
1. まず、マニュアルを見る。もし環境変数について分からなければ、それも調べる。
bashで分からなければ、kshのマニュアルが分かりやすい。 http://uw714doc.sco.com/ja/man/html.1/ksh.1.html
> 旧式の -k オプションが設定されていると、....
2. set -k と、 set +k について試す。
$ echo a=b c
$ sh -c a=UNIX 'echo $a MAGAZINE'

>> 950 少なくとも、UNIX Version 7 の Bourne からあるようだ。Thompson shellは-t -cのみ。
http://www.tuhs.org/
>> 949 の sh は、Bourne Shell でなく、ash か dash じゃないか?
0952名無しさん@お腹いっぱい。2012/06/06(水) 22:40:34.04
学校の課題でシェルスクリプトの作成、及び
既存のシェルスクリプトの動作内容の説明が課題になっているのですが

習い始めでコマンドすらまともに分からない状態なので、何が何やらさっぱりです
PCすらそんな使わないので、マニュアルみながらでも頭が弾けそうです・・
ここで質問すれば答えてもらえるでしょうか?殆ど丸投げになりそうですが。。
時間があれば1つ1つ学びながら進めたいんですが、何せ時間がないもんで;;
0953名無しさん@お腹いっぱい。2012/06/06(水) 22:47:06.80
死ね
0954名無しさん@お腹いっぱい。2012/06/06(水) 22:56:57.23
ヤフー知恵なんたらとか教えてグーとかにでも丸投げしておけば
お節介な誰かが課題解いてくれるっしょ
0955名無しさん@お腹いっぱい。2012/06/06(水) 23:04:45.37
学校の課題って言わずに、丸投げって気づかれないように適当に質問すればすぐに答が返ってくるのに...
0956名無しさん@お腹いっぱい。2012/06/06(水) 23:22:53.72
>>955
いや>>939辺りからの流れ見てると
その答えが自分には答えになって無いほど難しく
自分の無知さで質問したら怒られそうだったので・・
0957名無しさん@お腹いっぱい。2012/06/06(水) 23:25:33.74
前置きはいいからさっさと質問すれ
09587492012/06/06(水) 23:29:09.32
>>956
とりあえず投げれば暇な奴が氏ねとかググれカスとかman読めとか言いながらも答えてくれんじゃね?
0959名無しさん@お腹いっぱい。2012/06/06(水) 23:41:54.35
以下の動作を行うシェルスクリプトを作成しなさい。
report6.tex から report6.dvi を作成する.
report6.dvi から report6.pdf を作成する.
xdvi により report6.dvi の内容を表示する.
report6.tex, report6.dvi, report6.pdfの各ファイルサイズを出力する。

というものです;;まだまだ動作説明とか沢山あるのに
オンラインマニュアルを参照しつつ3時間ほど悪戦苦闘しましたが
1つも進まず、正直泣きたい気分です。。。
既存のシェルは文長くなりすぎて書き込めませんが
0960名無しさん@お腹いっぱい。2012/06/06(水) 23:48:43.77
そこは普通はシェルスクリプトじゃなくて
makeかomakeあたりで書くところだろという突っ込みはなし?
0961名無しさん@お腹いっぱい。2012/06/06(水) 23:54:29.88
platex report6.tex
dvipdfmx report6.dvi
xdvi report6.dvi
wc -c report6.tex, report6.dvi, report6.pdf
0962名無しさん@お腹いっぱい。2012/06/07(木) 00:10:59.08
志村ーカンマー
0963名無しさん@お腹いっぱい。2012/06/07(木) 00:14:59.00
>>961
本当にありがとう御座います。
それだけの物でもマニャアル読みながらだと中々書けない
以下の様なスクリプトの動作説明が8つぐらいあるのすが
#!/bin/sh

# remember - an easy command-line based memory pad
# search the results with 'remindme'

rememberfile="$HOME/.remember"

if [ $# -eq 0 ] ; then
echo "Enter note, end with ^D "
#ヒント:下記の cat の入力は標準入力です。入力の終了は空行で ^D を押します
cat - >> $rememberfile
else
echo "$@" >> $rememberfile
fi
人に聞かずにやるには限界です。。1歩も前に進まない。。
09647492012/06/07(木) 00:26:41.76
>>963
動作説明ってこんな感じでいいのか?

>#!/bin/sh

># remember - an easy command-line based memory pad
># search the results with 'remindme'

>rememberfile="$HOME/.remember"
ファイル指定

>if [ $# -eq 0 ] ; then
引数がなければ
>echo "Enter note, end with ^D "
""内の文字列を表示
>#ヒント:下記の cat の入力は標準入力です。入力の終了は空行で ^D を押します
>cat - >> $rememberfile
キー入力を$HOME/.rememberに書き込み
>else
引数があれば
>echo "$@" >> $rememberfile
引数全体を$HOME/.rememberに書き込み
>fi
0965名無しさん@お腹いっぱい。2012/06/07(木) 00:47:25.54
>>964
正にその通りです。後4つが分かれば残りはそれらを参照すれば出来るそうですのでお願いします.
#!/bin/sh

# formatdir - output a directory listing

for file in *
do
if [ -d "$file" ]
then
size=`ls -1 "$file" | wc -l | sed 's/ //g'`
if [ $size -eq 1 ]
then
echo "$file ($size entry)"
else
echo "$file ($size entries)"
fi
else
size=`ls -l "$file" | sed 's/^[^ ]*[ ]*[^ ]*[ ]*[^ ]*[ ]*[^ ]*[ ]*\([0-9]*\)[^0-9].*/\1/'`
echo "$file ($size byte)"
fi
done
0966名無しさん@お腹いっぱい。2012/06/07(木) 00:48:39.60
#!/bin/sh

# checkspelling - check the spelling of a word

spell="ispell -l" # if you have ispell installed instead
# if not, just define spell=spell or
# equivalent.

# ヒント
# "ispell -l" は標準入力から入力された単語(複数)から
# スペルの間違っている単語だけを出力します。

if [ $# -lt 1 ] ; then
echo "Usage: $0 word or words" >&2
exit 1
fi

for word in $*
do
test=`echo $word | $spell`
if [ -z "$test" ] ; then
echo "$word: spelled correctly."
else
echo "$word: misspelled."
fi
done
0967名無しさん@お腹いっぱい。2012/06/07(木) 00:50:16.01
#!/bin/sh
# hilow - a simple number guessing game

biggest=100 # maximum number possible
guess=0 # guessed by player
guesses=0 # number of guesses made
number=`expr $$ % $biggest` # 1 から $biggest の間の乱数を生成

while [ $guess -ne $number ]
do
echo "Guess? "
read guess # read guess で guess 変数にキーボードから入力した値が入る
if [ $guess -lt $number ]
then
echo "... bigger!"
elif [ $guess -gt $number ]
then
echo "... smaller!"
fi
guesses=`expr $guesses + 1` # guesses の値を1増やしている
done

echo "Right!! Guessed $number in $guesses guesses."
0968名無しさん@お腹いっぱい。2012/06/07(木) 00:50:59.66
#!/bin/sh

# remindme - search a datafile for matching lines, or show the contents
# of the datafile if no arg is specified

rememberfile="$HOME/.remember"

if [ $# -eq 0 ] ; then
less $rememberfile
else
grep -i "$@" $rememberfile | less
fi
0969名無しさん@お腹いっぱい。2012/06/07(木) 01:06:04.28
>>965
>for file in *
カレントディレクトリ内のすべてのファイル名、ディレクトリ名について繰り返し。fileには作業対象ファイル(ディレクトリ)名が入る。
>do
>if [ -d "$file" ]
$fileがディレクトリなら
>then
>size=`ls -1 "$file" | wc -l | sed 's/ //g'`
ディレクトリ内のファイル数を数える。
>if [ $size -eq 1 ]
ファイル数が1なら
>then
>echo "$file ($size entry)"
単数形で表示
>else
ファイルが複数あれば
>echo "$file ($size entries)"
複数形で表示
>fi
>else
ディレクトリじゃなければ
>size=`ls -l "$file" | sed 's/^[^ ]*[ ]*[^ ]*[ ]*[^ ]*[ ]*[^ ]*[ ]*\([0-9]*\)[^0-9].*/\1/'`
サイズの部分を切り出して
>echo "$file ($size byte)"
表示
>fi
>done

0970名無しさん@お腹いっぱい。2012/06/07(木) 01:15:11.97
全部 http://www.intuitive.com/wicked/wicked-cool-shell-script-library.shtml にあるスクリプトだな
>>965
018-formatdir.sh
>>966
025-checkspelling.sh
>>967
013-hilow.sh
>>968
023-remindme.sh
0971名無しさん@お腹いっぱい。2012/06/07(木) 01:15:32.67
しかし、おまえの勉強にはまったくなってないけど、いいの?
09729702012/06/07(木) 01:17:17.49
おっと、和訳もあるな> ttp://www.amazon.co.jp/dp/4797327286/
0973名無しさん@お腹いっぱい。2012/06/07(木) 01:17:55.21
>>966
>spell="ispell -l" # if you have ispell installed instead
スペルチェックに使うコマンドの指定。
># if not, just define spell=spell or
># equivalent.

>if [ $# -lt 1 ] ; then
引数の数が1より小さければ
>echo "Usage: $0 word or words" >&2
標準エラー出力に表示
>exit 1
スクリプト終了、終了コード1
>fi

>for word in $*
すべての引数について繰り返し
>do
>test=`echo $word | $spell`
$wordをspellに渡して
>if [ -z "$test" ] ; then
spellの結果が0文字なら
>echo "$word: spelled correctly."
スペルミスしてない
>else
スペルミスがあれば
>echo "$word: misspelled."
スペルミスしてるよ。
>fi
>done
0974名無しさん@お腹いっぱい。2012/06/07(木) 01:23:30.94
>>971
仰る通りです。。
このままではいけないのでこのような質問の仕方は今回限りにします
0975名無しさん@お腹いっぱい。2012/06/07(木) 01:34:55.83
>>967は終わってるのかな。

>>968
>#!/bin/sh

># remindme - search a datafile for matching lines, or show the contents
># of the datafile if no arg is specified

>rememberfile="$HOME/.remember"

>if [ $# -eq 0 ] ; then
引数がなければ
>less $rememberfile
$rememberfileをそのまま表示
>else
引数があれば
>grep -i "$@" $rememberfile | less
引数で検索して表示
>fi
0976名無しさん@お腹いっぱい。2012/06/07(木) 01:35:39.56
>>970
ホントだ。。。
完全にココのコピペですね;;すげぇ

まぁ動作の解読が必要な事は変わりなさそうですね・・
0977名無しさん@お腹いっぱい。2012/06/07(木) 08:06:36.42
シェルスクリプト書くならエディタは何がお勧めですか?
0978名無しさん@お腹いっぱい。2012/06/07(木) 08:16:19.33
vim,emacs
0979名無しさん@お腹いっぱい。2012/06/07(木) 11:46:48.75
秀丸
0980名無しさん@お腹いっぱい。2012/06/07(木) 11:48:46.00
どれでもたいして変わらんよ。
使い慣れたエディタで書けばいい。
0981名無しさん@お腹いっぱい。2012/06/07(木) 12:03:36.22
言い忘れましたがif,for,while,case文などでちゃんとインデントしてくれて
簡単な文法チェックもできるエディタ限定でお願いします
0982名無しさん@お腹いっぱい。2012/06/07(木) 12:38:03.05
>>979
秀丸使ったことないけど具体的にどんなところがいいの?
vimと比較したいです。
0983名無しさん@お腹いっぱい。2012/06/07(木) 13:24:38.07
>>982
キーバインドが標準的
文法チェックが出来る
インデントも正しく出来る
0984名無しさん@お腹いっぱい。2012/06/07(木) 18:46:33.02
標準的ときたか!!
0985名無しさん@お腹いっぱい。2012/06/07(木) 20:33:24.17
名前とアイコンは標準的じゃないね
0986名無しさん@お腹いっぱい。2012/06/07(木) 21:08:20.47
標準かどうかはともかくエディタの人口で言うとvimやemacsの方が圧勝だよな
4200円っていう価格設定と実質日本人しか使ってないってのは痛い
0987名無しさん@お腹いっぱい。2012/06/07(木) 22:46:48.13
そもそもWindowsのキーバインド基準に言われても
0988名無しさん@お腹いっぱい。2012/06/07(木) 22:58:20.08
>>986
母数が3桁は違うだろ…現実みようぜ…
0989名無しさん@お腹いっぱい。2012/06/07(木) 23:22:06.04
母数関係ない話になんでいきなり母数言い出すのか意味不明の頭の悪さ。
0990名無しさん@お腹いっぱい。2012/06/07(木) 23:27:56.11
>>970
>1
0991名無しさん@お腹いっぱい。2012/06/07(木) 23:38:34.25
現実って何だ?
09929702012/06/07(木) 23:46:20.41
>>990
すまん。規制されててスレ立てられんかった。誰か頼む。
0993名無しさん@お腹いっぱい。2012/06/07(木) 23:53:51.08
だめだった
レス数が950を超えています。1000を超えると書き込みができなくなります。