#navi(../)

* シェルスクリプトで文字列操作のleft, rightを作ってみた [#w4176aa4]
左から何文字のleft, 右から何文字のrigth関数を作ってみました。~
VisualBasicやVBAなどのLEFT, RIGHT関数と同様な動作になります。~

尚、動作確認はUbuntu10.04で行いました。シェルはbashを利用しています。

#contents

#htmlinsertpcsp(linux_ads_top.html,linux-sp.html)

* left, rightのサンプルスクリプト [#t2547155]
本シェルスクリプトを利用して直接的および間接的障害が生じても一切責任を負いません。~
自己責任のもとで本スクリプトをご利用ください。

ダウンロード:&ref(left_right.sh);
 #!/bin/bash
 
 #------------------------------
 # isnum $1
 #------------------------------
 function isnum {
   if [ $# -ne 1 ]; then
     echo "[ERROR] isnum : invalid argument" 1>&2 # output stderr
     return 1
   fi
   echo $1 | egrep '^[0-9]+$' > /dev/null 2>&1
   if [ $? -eq 0 ]; then
     return 0
   fi
   return 1
 }
 
 #------------------------------
 # left string length
 #------------------------------
 function left {
   # $1 : string
   # $2 : length
   if [ $# -ne 2 ]; then
     echo "[ERROR] left $* : invalid argument" 1>&2 # output stderr
     return 1
   else
     isnum $2
     if [ $? -ne 0 ]; then
       echo "[ERROR] left $* : invalid argument" 1>&2 # output stderr
       return 1
     fi
     if [ `expr length $1` -le $2 ]; then
       echo $1
       return 0 
     fi
     expr substr $1 1 $2
     return 0
   fi
 }
 
 #------------------------------
 # right string length
 #------------------------------
 function rigth {
   # $1 : string
   # $2 : length
   if [ $# -ne 2 ]; then
     echo "[ERROR] right $* : invalid argument" 1>&2 # output stderr
     return 1
   else
     isnum $2
     if [ $? -ne 0 ]; then
       echo "[ERROR] right $* : invalid argument" 1>&2 # output stderr
       return 1
     fi
     if [ `expr length $1` -le $2 ]; then
       echo $1
       return 0 
     fi
     l=`expr length $1`
     p=`expr $l - $2 + 1`
     expr substr $1 $p $2
     return 0
   fi
 }
 
 #------------------------------
 # TEST
 #------------------------------
 left HelloWorld 5
 rigth HelloWorld 5

上記のスクリプトでは、以下の関数を定義しています。
|function|説明|
|isnum|数値かどうかをチェックする(負の値はサポートしていません)&br;egrepを利用して正規表現で数値かどうかをチェックしています。|
|left|文字列と抽出する文字数を指定すると左から指定した抽出文字数分取得します。|
|right|文字列と抽出する文字数を指定すると右から指定した抽出文字数分取得します。|

* 実行結果 [#je2b2be0]
TESTとコメントしてある部分にleft, rigth関数を呼び出す例を記述してあります。
 #------------------------------
 # TEST
 #------------------------------
 left HelloWorld 5
 rigth HelloWorld 5

-実行結果
 sakura@ubuntu:~$ chmod +x left_right.sh 
 sakura@ubuntu:~$ ./left_right.sh 
 Hello
 World


#htmlinsertpcsp(linux_ads_btm.html,linux-sp.html)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS