シェルスクリプト関係の雑多なメモ。たまにしか書かないと忘れますね……。
変数の文字列長を出力
正規表現の後方参照で取得した文字列がきちんと代入されているかを確認しようとして、変数に収められた文字列の長さを知りたかったので。
${#VAR}
ドルとシャープを使うのがポイント。
if文
if [ $HOGE = "foobar" ] && [ $FUGA > 0 ]; then
# 処理
fi
正規表現
sed -nr
で。
変数と文字列と glob の結合
rm -f "${HOGE}/${FUGA}_"*
パス区切りのスラッシュやファイル名にアンダーバーとして通常の文字列を使いつつ、変数もあり、かつ末尾が日付で不定なので glob のワイルドカードを使いたい、というケース。
変数+文字列はダブルクォーテーションで囲むことでクリア。ワイルドカードのみダブルクォーテーションの外に出すことでこれも条件をクリアしました。
- bashのechoでアスタリスク「*」がワイルドカードとして展開される場合の対処: 小粋空間
- 文字列と変数の結合 | Linuxシェルスクリプト | shiraberu.tech
- Bashの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 の結合
- bashのechoでアスタリスク「*」がワイルドカードとして展開される場合の対処: 小粋空間
- 文字列と変数の結合 | Linuxシェルスクリプト | shiraberu.tech
- BashのGlobは積極的に利用しましょう – 理系学生日記