ナビゲーション
FrontPage
FreeBSD
Linux
Citrix XenServer
VMware ESXi
Unixコマンド
MySQL
PostgreSQL
Windows
CMS/CRM
クラウド
用語
PHPスクリプト
Bashシェルスクリプト
Rubyスクリプト
開発日記
検索
ツールボックス
新しいページの作成
バックアップの表示
外部のリンク元
最近更新したページ
全ページ
ヘルプ
凍結
アップロード
ページ名の変更
最新の40件
2016-08-17
Linux/NagiosQL
Linux/CentOSチューニング
2016-02-23
Linux/ソフトウェアRAID復旧手順
2016-02-18
FreeBSD/DHCP
FreeBSD/squid
2016-02-15
Unixコマンド/file
2016-02-05
FreeBSD/DynaBook
FreeBSD/Linux compatibility
2016-01-21
PHPスクリプト/PEAR DBインストールできない
PHPスクリプト/PEAR DB
2016-01-20
PHP/フレームワーク/Zend Framework
PHP/フレームワーク
FreeBSD/Postfix+amavisd+clamav
2016-01-15
FreeBSD/sl
2015-12-04
Unixコマンド/dig
Unixコマンド/nslookup
Unixコマンド/traceroute
Linux/rsync
FreeBSD/rsync
Unixコマンド/vipw
2015-11-25
Linux/Postfix+MySQL+Postfix AdminによるバーチャルSMTPサーバの構築
Linux/Postfix + postgrey
2015-11-24
Linux/Postfix + amavisd + clamav
2015-05-25
Unixコマンド/ifconfig
2015-05-23
Unixコマンド/netstat
Unixコマンド/route
Unixコマンド/lsof
Unixコマンド/disown
Unixコマンド/time
Unixコマンド/crontab
2015-05-22
Unixコマンド/nohup
Unixコマンド/fgとbg
Unixコマンド/nice
Unixコマンド/kill
Unixコマンド/jobs
Unixコマンド/restor
Unixコマンド/dump
Unixコマンド/uncompress
Unixコマンド/compress
Unixコマンド/zcat
total:
21923
today:
1
yesterday:
0
now:
1
本文
ノート
?
編集
差分
一覧
Bashシェルスクリプト/特殊な変数展開 の編集
*特殊な変数展開 [#tacc1327] [[dokuwiki.fl8.jp掲載済>http://dokuwiki.fl8.jp/doku.php/bash/03_special_variable]] **変数の値の有無による設定/展開 [#n555b627] 変数にすでに値が入っている場合と何も値が入っていない場合で、動作が異なる代入/参照方法があります。~ 変数に値が代入されていれば新たにそこには代入しないけれど、値が入っていないときには代入しよう、という[[if文>Bashシェルスクリプト/制御文#a310f3fa]]的な動作をする書き方です。 |200|600|c |拡張的な変数展開|説明|h |${VAR:-word}|変数VARに値が入っていないならwordを値として返す。| |${VAR:=word}|変数VARに値が入っていないならwordを代入する。| |${VAR:?word}|変数VARに値が入っていないならwordを出力する。| |${VAR:+word}|変数VARに値が入っているならwordを代入する。| **Bashで追加された拡張的な変数展開 [#g1a0d13a] ***変数の値を切り出す(${variable:offset}、${variable:offset:length}) [#v78f3ab8] ${variable:offset:length}は、変数variableに代入されている値に対して、offset番目からlength分の文字列を切り出します。~ 最初の文字列が0番目です。lengthを省略すると最後までとして解釈します。 ■例1:変数VARの値の2番目から6個を切り出す。 $ VAR=0123456789 $ echo ${VAR:2:6} 234567 ■例2:offsetやlength部分には算術式を指定できます。~ (5-2)番目から(1+3)個分切り出す。 $ VAR=0123456789 $ echo ${VAR:(5-2):(1+3)} 3456 ***合致する変数名を全て表示する。(${!prefix*}) [#kff7f884] ${!prefix*}は、文字列prefixで始まる名前の変数を全て表示します。~ ■例:VAR*と合致する変数名を全て表示する。 $ VAR_1=0123 $ VAR_2=abcd $ VAR_3=wxyz $ echo ${!VAR*} VAR_1 VAR_2 VAR_3 ***変数の値の文字数を表示する(${#variable}) [#se74c8a4] ${#variable}は、変数variableに代入されている値(文字列)の文字数を表示します。~ $#は位置パラメータの個数を表示しますが、それによく似ています。 ■例:変数VAR1とVAR2の文字数を表示する。 $ VAR1=0123 $ VAR2="abcd xyz" $ echo ${#VAR1} 4 $ echo ${#VAR2} 8 ***変数の値を文字列指定(前方一致)で削除する。(${variable#word}、${variable##word}) [#a3298f60] ${variable#word}と${variable##word}は、変数variableに代入されている値(文字列)の先頭部分が文字列wordに合致する時に、そこまでの文字列を削除します。~ #が1個だと最短一致パターンとなり、2個だと最長一致パターンとで判断します。~ 文字列指定にはワイルドカードが使えます。 ■例1:変数VARに代入されている値から最短一致でabcを削除 $ VAR=abc1234xyz987abcd1234efg $ echo ${VAR#abc} 123xyz987abcd1234efg ■例2:変数VARに代入されている値から最短一致でaで始まって2で終わる文字列を削除 $ echo ${VAR#a*2} 3xyz987abcd1234efg ■例3:変数VARに代入されている値から最長一致でaで始まって2で終わる文字列を削除 $ echo ${VAR##a*2} 34efg ■例4:変数VARに代入されている値から最短一致で1234を削除 $ echo ${VAR#*1234} xyz987abcd1234efg ■例5:変数VARに代入されている値から最長一致で1234を削除 $ echo ${VAR##*1234} efg ***変数の値を文字列指定(後方一致)で削除する。(${variable%word}、${variable%%word}) [#j391f12e] ${variable%word}と${variable%%word}は、変数variableの値(文字列)のうち、後方部分が文字列wordに合致する場合はそこまでの部分を削除します。~ %が1個だと最短一致パターンとなり、2個だと最長一致パターンとで判断します。~ 文字列指定にはワイルドカードが使えます。 ■例1:最後尾の1234を削除 $ VAR=abcd1234xyz987abcd1234 $ echo ${VAR%1234} abcd1234xyz987abcd ■例2:変数VARに代入されている値から最後尾の最短一致でdで始まって4で終わる文字列を削除 $ echo ${VAR%d*4} abc ■例3:変数VARに代入されている値から最後尾最長一致でdで始まって4で終わる文字列を削除 $ echo ${VAR%%d*4} 34efg ■例4:変数VARに代入されている値から最後尾最短一致で34を削除 $ echo ${VAR%34*} abcd1234xyz987abcd12 ■例5:変数VARに代入されている値から最後尾最長一致で34を削除 $ echo ${VAR%%34*} abcd12 ***変数の値を文字列指定で置き換える(${variable/pattern/string}、${variable//pattern/string}) [#q949b183] ${variable/pattern/string}と${variable//pattern/string}は、変数variableの値(文字列)が文字列パターンpatternに合致すればその部分を文字列stringに置き換えます。~ patternにはワイルドカードが利用できる為、最短一致と最長一致とが使えます。~ /が1個は最短一致で、2個の時は一致する全てを置き換えます。 ■例1:最短一致で1234をAAAに置き換える $ VAR=abcd1234xyz987abcd1234abcd $ echo ${VAR/1234/AAA} abcdAAAxyz987abcd1234abcd ■例2:最長一致で1234をAAAに置き換える $ VAR=abcd1234xyz987abcd1234abcd $ echo ${VAR/1234//AAA} abcdAAAxyz987abcdAAAabcd ■例3:1で始まりaで終わる部分をBBBに置き換える $ VAR=abcd1234xyz987abcd1234abcd $ echo ${VAR/1*a/BBB} abcdBBBbcd
タイムスタンプを変更しない
*特殊な変数展開 [#tacc1327] [[dokuwiki.fl8.jp掲載済>http://dokuwiki.fl8.jp/doku.php/bash/03_special_variable]] **変数の値の有無による設定/展開 [#n555b627] 変数にすでに値が入っている場合と何も値が入っていない場合で、動作が異なる代入/参照方法があります。~ 変数に値が代入されていれば新たにそこには代入しないけれど、値が入っていないときには代入しよう、という[[if文>Bashシェルスクリプト/制御文#a310f3fa]]的な動作をする書き方です。 |200|600|c |拡張的な変数展開|説明|h |${VAR:-word}|変数VARに値が入っていないならwordを値として返す。| |${VAR:=word}|変数VARに値が入っていないならwordを代入する。| |${VAR:?word}|変数VARに値が入っていないならwordを出力する。| |${VAR:+word}|変数VARに値が入っているならwordを代入する。| **Bashで追加された拡張的な変数展開 [#g1a0d13a] ***変数の値を切り出す(${variable:offset}、${variable:offset:length}) [#v78f3ab8] ${variable:offset:length}は、変数variableに代入されている値に対して、offset番目からlength分の文字列を切り出します。~ 最初の文字列が0番目です。lengthを省略すると最後までとして解釈します。 ■例1:変数VARの値の2番目から6個を切り出す。 $ VAR=0123456789 $ echo ${VAR:2:6} 234567 ■例2:offsetやlength部分には算術式を指定できます。~ (5-2)番目から(1+3)個分切り出す。 $ VAR=0123456789 $ echo ${VAR:(5-2):(1+3)} 3456 ***合致する変数名を全て表示する。(${!prefix*}) [#kff7f884] ${!prefix*}は、文字列prefixで始まる名前の変数を全て表示します。~ ■例:VAR*と合致する変数名を全て表示する。 $ VAR_1=0123 $ VAR_2=abcd $ VAR_3=wxyz $ echo ${!VAR*} VAR_1 VAR_2 VAR_3 ***変数の値の文字数を表示する(${#variable}) [#se74c8a4] ${#variable}は、変数variableに代入されている値(文字列)の文字数を表示します。~ $#は位置パラメータの個数を表示しますが、それによく似ています。 ■例:変数VAR1とVAR2の文字数を表示する。 $ VAR1=0123 $ VAR2="abcd xyz" $ echo ${#VAR1} 4 $ echo ${#VAR2} 8 ***変数の値を文字列指定(前方一致)で削除する。(${variable#word}、${variable##word}) [#a3298f60] ${variable#word}と${variable##word}は、変数variableに代入されている値(文字列)の先頭部分が文字列wordに合致する時に、そこまでの文字列を削除します。~ #が1個だと最短一致パターンとなり、2個だと最長一致パターンとで判断します。~ 文字列指定にはワイルドカードが使えます。 ■例1:変数VARに代入されている値から最短一致でabcを削除 $ VAR=abc1234xyz987abcd1234efg $ echo ${VAR#abc} 123xyz987abcd1234efg ■例2:変数VARに代入されている値から最短一致でaで始まって2で終わる文字列を削除 $ echo ${VAR#a*2} 3xyz987abcd1234efg ■例3:変数VARに代入されている値から最長一致でaで始まって2で終わる文字列を削除 $ echo ${VAR##a*2} 34efg ■例4:変数VARに代入されている値から最短一致で1234を削除 $ echo ${VAR#*1234} xyz987abcd1234efg ■例5:変数VARに代入されている値から最長一致で1234を削除 $ echo ${VAR##*1234} efg ***変数の値を文字列指定(後方一致)で削除する。(${variable%word}、${variable%%word}) [#j391f12e] ${variable%word}と${variable%%word}は、変数variableの値(文字列)のうち、後方部分が文字列wordに合致する場合はそこまでの部分を削除します。~ %が1個だと最短一致パターンとなり、2個だと最長一致パターンとで判断します。~ 文字列指定にはワイルドカードが使えます。 ■例1:最後尾の1234を削除 $ VAR=abcd1234xyz987abcd1234 $ echo ${VAR%1234} abcd1234xyz987abcd ■例2:変数VARに代入されている値から最後尾の最短一致でdで始まって4で終わる文字列を削除 $ echo ${VAR%d*4} abc ■例3:変数VARに代入されている値から最後尾最長一致でdで始まって4で終わる文字列を削除 $ echo ${VAR%%d*4} 34efg ■例4:変数VARに代入されている値から最後尾最短一致で34を削除 $ echo ${VAR%34*} abcd1234xyz987abcd12 ■例5:変数VARに代入されている値から最後尾最長一致で34を削除 $ echo ${VAR%%34*} abcd12 ***変数の値を文字列指定で置き換える(${variable/pattern/string}、${variable//pattern/string}) [#q949b183] ${variable/pattern/string}と${variable//pattern/string}は、変数variableの値(文字列)が文字列パターンpatternに合致すればその部分を文字列stringに置き換えます。~ patternにはワイルドカードが利用できる為、最短一致と最長一致とが使えます。~ /が1個は最短一致で、2個の時は一致する全てを置き換えます。 ■例1:最短一致で1234をAAAに置き換える $ VAR=abcd1234xyz987abcd1234abcd $ echo ${VAR/1234/AAA} abcdAAAxyz987abcd1234abcd ■例2:最長一致で1234をAAAに置き換える $ VAR=abcd1234xyz987abcd1234abcd $ echo ${VAR/1234//AAA} abcdAAAxyz987abcdAAAabcd ■例3:1で始まりaで終わる部分をBBBに置き換える $ VAR=abcd1234xyz987abcd1234abcd $ echo ${VAR/1*a/BBB} abcdBBBbcd
テキスト整形のルールを表示する
ログインまたはアカウント作成