人気ブログランキング | 話題のタグを見る
(Linux)パスを含む変数をdirname,basenameしてコマンドに渡したい
((Linux)シェルスクリプトで自身の絶対パスを取得したいも似たような記事になってます。)

例えば下記のようなシェルスクリプトがあるとします。


BKFILE="/var/bkup/user.tgz"
BKSRC="/home/hoge/"

BKSRC_UP=`dirname ${BKSRC}`
BKSRC_NAME=`basename ${BKSRC}`

cd $BKSRC_UP
tar vzcf $BKFILE $BKSRC_NAME


相対パスでtarを使ってバックアップするスクリプトですが、/home/hoge/ の上のフォルダをバックアップしたいのに、いちいち一時変数(BKSRC_NAME)に入れてから tar コマンドにかけないといけません。
また、相対パスでtarを使いたいわけですが、チェンジディレクトリするためにまた一時変数に入れないといけません。

で、ググルと内気でシャイな相対男子、dirnameで絶対男子になるの巻 - i am voidに参考になる情報が。。
$()を使うと一時変数にいちいち入れなくてもいいようです。

ということで、上記のスクリプトを書きなおしたのが下記です。

BKFILE="/var/bkup/user.tgz"
BKSRC="/home/hoge/"

cd $(dirname ${BKSRC})
tar vzcf $BKFILE $(basename $BKSRC)


参考:
シェルスクリプトにおける相対パスから絶対パスへの変換 LAMP Tips
by Jehoshaphat | 2011-10-05 00:20 | Linux | Comments(0)


<< (Linux)コマンドを連結し... (Linux)tarを使うとき... >>