シェルスクリプト総合 ..
[
2ch
|
▼Menu
]
■コピペモード
□
スレを通常表示
□
オプションモード
□このスレッドのURL
■項目テキスト
113:112 09/06/23 22:21:09 c8G3nrDU shift $(($OPTIND - 1)) PAGE="$1" if [ x$PAGE == x ]; then echo "What manual page do you want?" exit 1 fi i=1 for onoff in ${SECT[@]}; do if [ x"$onoff" = x"on" ]; then SECTURL="$SECTURL"'&Sec'"$i"'='"$onoff" fi i=$(expr $i + 1) done URL="${BASEURL}"'Pagename='"${PAGE}"'&submit=Search%21'$SECTURL $COMMAND "$URL" よろしくお願いします。 114:login:Penguin 09/06/23 23:37:11 iNYrdW4A 120点 115:login:Penguin 09/06/23 23:41:00 9feAjnJ4 bash限定(shで使わない)なら、外部コマンドよりbashの内部コマンドを使った方が速くなりますよ。 i=$(expr $i + 1) → ((i++)) とか。 116:login:Penguin 09/06/24 00:57:03 23DWLrsu for (( expr1 ; expr2 ; expr3 )) ; do list ; done 117:112 09/06/24 01:41:57 B7cQg4Om >>114-116 ありがとうございます。 早速、(( ))を使って書き直しました。 10万までインクリメントしていくだけのスクリプトで 速度を計測してみたのですが、全然違うのですね! ./tmp.sh 4.64s user 0.10s system 99% cpu 4.788 total ./tmp.sh 92.07s user 111.03s system 96% cpu 3:31.31 total exprの方(下の方)が遅いです。 それと一貫性が無いように感じたので、1行目のwhichの文を$(which w3m)としました。 また、bashを見てみると[[ ]]という組み込みの評価式があったので、 if [ \( ! -e "$COMMAND" \) -o \( ! -x "$COMMAND" \) ]; then という部分を変更しました。 if [[ ( ! -e "$COMMAND" ) || ( ! -x "$COMMAND" ) ]]; then これも計測してみたら、若干ですが[[ ]]の方が速かったです。 >>116で挙げられた記法を使用したことで変数が1つ減りました。 こんな感じになりました。 #!/bin/bash # @(#) man on linux.or.jp # COMMAND=$(which w3m) PAGE= SECTION= SECT=("on" "on" "on" "on" "on" "on" "on" "on") SECTURL= BASEURL="http://search.linux.or.jp/cgi-bin/JM/man.cgi?" URL= if [[ ( ! -e "$COMMAND" ) || ( ! -x "$COMMAND" ) ]]; then echo "not installed w3m" exit 1 fi
次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
レスジャンプ
mixiチェック!
Twitterに投稿
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch
5392日前に更新/221 KB
担当:undef