シェルスクリプト関係メモ

シェルスクリプト関係の雑多なメモ。たまにしか書かないと忘れますね……。

変数の文字列長を出力

正規表現の後方参照で取得した文字列がきちんと代入されているかを確認しようとして、変数に収められた文字列の長さを知りたかったので。

${#VAR}

ドルとシャープを使うのがポイント。

if文

if [ $HOGE = "foobar" ] && [ $FUGA > 0 ]; then
    # 処理
fi

正規表現

sed -nr で。

変数と文字列と glob の結合

rm -f "${HOGE}/${FUGA}_"*

パス区切りのスラッシュやファイル名にアンダーバーとして通常の文字列を使いつつ、変数もあり、かつ末尾が日付で不定なので glob のワイルドカードを使いたい、というケース。

変数+文字列はダブルクォーテーションで囲むことでクリア。ワイルドカードのみダブルクォーテーションの外に出すことでこれも条件をクリアしました。

tar でドット始まりのファイルを含む

tar -C / -czf "${HOGE}/${FUGA}.tar.gz" `find "/PATH/TO/DIRECTORY/" -name *.env`

通常の tar だとできないので、いったん find を噛ませる。

find でディレクトリ直下のファイルのみに絞り込む

find "/PATH/TO/DIRECTORY/" -maxdepth 1 -name *.env

-maxdepth 1 オプションを使用する。

7日前以降のファイルは削除

rm -f `ls -t . | tail -n+7`

参考

変数の文字列長を出力

if文

正規表現

未使用

変数と文字列と glob の結合

tar でドット始まりのファイルを含む

find でディレクトリ直下のファイルのみに絞り込む

シングルクォートのエスケープ

mysqldump

7日前以降のファイルは削除

この記事を書いた人

アルム=バンド

フロントエンド・バックエンド・サーバエンジニア。LAMPやNodeからWP、Gulpを使ってejs,Scss,JSのコーディングまで一通り。たまにRasPiで遊んだり、趣味で開発したり。