‘小ネタ’ タグのついている投稿

変数で遊んでみるとか。

2010年6月18日 スクリプト関連, 雑記

多分この二箇所が一番楽しめるところ。
ここと

test03 () {
    $1 doukashira
}

ここ

${test[2]} echo

へぇっていう感じに。

#!/bin/bash
test03 () {
    $1 doukashira
}
test=( test01 test02 test03)
for (( i = 0; i < 6; i++ ))
{
    test1=( `echo test0${i}1 test0${i}2 test0${i}3` )
    ttat[$i]=${test1[*]}
}
echo ${test[*]}
echo ${test1[*]}
${test[2]} echo
echo ${test[1]}
echo ${ttat[*]}
echo ${ttat[4]}
bbb=( ${ttat[2]} )
echo ${bbb[*]}
echo ${bbb[1]}

変数名に意味はありません。

引数を片っ端から配列に流し込んでみる。

2010年6月18日 スクリプト関連, 雑記

作業中のを部分的に切り出してみた。
こんな感じでどうかな。

#!/bin/bash
keyval () {
    i=${#kv[*]}
    kv[${i}]=”${1}=${2}”
}
keyval “oauth_consumer_key” “${consumer_key}”
keyval “oauth_nonce” “${oauth_nonce}”
keyval “oauth_signature_method” “HMAC-SHA1”
keyval “oauth_timestamp” “${oauth_timestamp}”
keyval “oauth_version” “1.0”
keyval “x_auth_mode” “client_auth”
keyval “x_auth_password” “${pss}”
keyval “x_auth_username” “${usr}”
data=`echo ${kv[*]} | sed ‘s/ /&/g’`

それなりに可変長でランダムな文字列とかsplitっぽいものとか。

2010年6月14日 スクリプト関連, 雑記

もっとマシなやり方もあるかもしれないけども、こんな感じのとか。

#!/bin/bash
echo $RANDOM | openssl sha1 | cut -c $((($RANDOM % 10) + 1))-$((($RANDOM % 10) + 20))

誰得なsplitっぽいものとか。

#!/bin/bash
split () {
    rtstr=( `echo ${2} | sed “s/${1}/ /g”` )
}
split $@
echo ${rtstr[*]}

6月末なんてすぐ来ちゃうからちょっとずつでも進めていかないと。
・・・地味にあせる。

Perlお触り途中経過。まだbashほどエロスは感じない。

2010年5月28日 スクリプト関連, 雑記

とりあえずPerlはここまでやった。
空の配列を作るところでかなり長いことハマってたけども、今日やっと事前に準備するものなんだって事に気が付いて何となく動くぞって程度にはなった感じ。クソ過ぎて涙が出るw
”インデックスを指定して代入!”ってやっただけじゃ配列用意してくれないのね。

一応このコードでgoo.glの短縮URLの取得まではできたので、作業記録も兼ねて置いとく。
テストコードとかそのまんまぺたり。

#!/usr/bin/perl

use strict;
use warnings;
use CGI;
use LWP::Simple;

my $q = new CGI;
my $Uname = $q->param(‘namae’);
my $Upss = $q->param(‘pswd’);
my $PushTEXT = $q->param(‘pushtext’);
#httpurlを抽出して配列に格納
my @http = $PushTEXT =~ /s?https?://[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+/g;
#空の配列を準備
my @gglhttp = ();

print $q->header(-charset=>”utf-8″);

my $data = get “http://ggl-shortener.appspot.com/?url=$http[2]”;
$data =~ s/{“short_url”:”|”}//g;
for( my $i=0 ; $i <= $#http ; $i++ ){
    print $http[$i];
    $gglhttp[$i] = get “http://ggl-shortener.appspot.com/?url=$http[$i]”;
    $gglhttp[$i] =~ s/{“short_url”:”|”}//g;
}

print $q->start_html(-title=>”タイトル”, -BGCOLOR=>’#ffffff’),
    $q->strong(“処理完了!”),
    $q->p(“$Uname”),
    $q->p(“$Upss”),
    $q->p(“$PushTEXT”),
    $q->p(“@http”),
    $q->p(“$#http”),
    $q->p(“$data”),
    $q->p(“@gglhttp”),
    $q->br,
    $q->a({href=>”/”}, “back”),
    $q->br,
    $q->br,
    $q->end_html;
exit;

こんな感じのフォームから中身を投げます。

<form id=”form” action=”posttest.cgi” method=”post”>
    <p>お名前:<input type=”text” name=”namae” /></p>
    <p>PASS:<input type=”password” name=”pswd” /></p>
    <p>TEXT:<textarea name=”pushtext” rows=”4″ cols=”40″>テキストエリア</textarea></p>
    <p><input type=”submit” name=”submit” value=”送信” /></p>
</form>

“$1″秒だけ待ってやる。

2010年5月8日 Linux, スクリプト関連, 雑記

[自分メモ] dateで実行時の分、秒を取得してfor文で実行時の分、秒+指定分、秒の値になるまでdateで監視して、ウェイトもどき。というのを今考えた。シェルスクリプトの話。

こんなメモを自分に宛てて残していたので、コードを書いてみた。

#!/bin/bash
echo “$1″秒だけ待ってやる。その間に答えを出したまえ。
getDrvTime=`date -d “$1 second” ‘+%M%S’`
getTime=`date ‘+%M%S’`
until [ $getDrvTime = $getTime ]
do
  getTime=`date ‘+%M%S’`
done
echo さあ、時間だ。答えを聞かせてもらおうか!

見ての通り。第一引数で指定した秒数分だけ待ってくれるスクリプト。結局for文じゃなかった。

あ、いつもの通りいつものごとくインデントが全角。

5/8 1:50am 追記
あとからsleepコマンドとか見つけちゃったので追記。

#!/bin/bash
echo “$1″秒だけ待ってやる。その間に答えを出したまえ。
sleep “$1” && echo さあ、時間だ。答えを聞かせてもらおうか!

サラッとすっきり。

GoogleのURL短縮サービスgoo.glを(ry 続き1。

2010年4月19日 Linux, スクリプト関連, 雑記

シェルスクリプトのみで地味に進行中。
ひとまず、文中に含まれるURLっぽい文字列をgoo.glに投げて短縮URLを受け取って文中のURLを置き換える所までできた。
ただ、このままだと、複数のURLが含まれたときに困ったことになってしまうので、そこら辺まだ手を入れていかないといけない。

一応、試してみたい人のために使い方。

スクリプト実行時に引数として二重引用符で囲った文字列をつけて実行する。だけ。
あとはスクリプトが文字列中に含まれるURLっぽい文字列を短縮URLに置き換えてくれる。
ただ、実はこれ制限があってURLの中に「スペース」「()」が混じってると多分うまくいかなかったり、URLの末尾に半角スペースが無いと、本文との切り分けができずにわけ分かんないことになったりする。

「スペース」に関しては原因は明確で、URLと本文の切り分けに使ってるからなんだけども、「()」の方は、エスケープしないと構文エラーになっちゃうからという何とも言えない原因。ここちょっといまいち調べが足りてないので、いまいちはっきりしたことは言えないんだけども、どうしたものかしらと思ってる。

で、これが今の所の暫定コード。
これに、Twitterの投稿スクリプトを組み込めば、URLを自動で短縮URLに加工して投稿してくれるTwitter投稿クライアントが出来る。

#!/bin/bash
str=`echo “$1” | grep tp://[0-9a-zA-Z@”#$%&’*+,-./] `
case “${#str}” in
  0 ) echo ${#str} $str ;;
  * ) echo $str | sed -e ‘s/http/nhttp/g’ -e ‘s/ftp/nftp/g’ -e ‘s/ /n/g’ >test.txt
  str2=`cat test.txt | grep tp://` ;;
esac
curl -G “http://ggl-shortener.appspot.com/?url=”`echo “$str2” | nkf -eMQ | tr = %` | sed ‘s/”/n/g’ | grep http >test2.txt
str3=`cat test2.txt`
echo `cat test.txt | sed “s%$str2%$str3%g”` >test2.txt

処理の流れなんかの説明は一通り形になってからやるつもり。ごちゃついてるけど、そんなに難しいこともやってないし。

GoogleのURL短縮サービスgoo.glをシェルスクリプトから使う。

2010年4月16日 Linux, スクリプト関連, 雑記

やってみたかっただけw
これだけじゃ使い道は無いのでTwitterにからめてもうちょっと拡張してみるつもり。

#!/bin/bash
curl -G “http://ggl-shortener.appspot.com/?url=”`echo “$1” | nkf -eMQ | tr = %` | sed ‘s/”/n/g’ | sed -n ‘/http/p’

何のひねりもないけども、使いようによっては結構便利に使えるかもしれない。

もしかするとnkfコマンドが無い環境もあるかもしれないので入ってなかったらやさしく入れてあげてください。