Shell

【Shell】shfmt ~ 入門編 ~

■ はじめに https://dk521123.hatenablog.com/entry/2024/03/26/143803 で、シェルスクリプトの lint ツール「ShellCheck」の調査の過程で 「shfmt」ってのが、見つかったのでメモ。 目次 【1】shfmt 【2】インストール 【3】実行例 1)Options 【4】He…

【Shell】ShellCheck ~ 入門編 ~

■ はじめに 静的コードチェックInspecode / Rocro を掛ける際に https://rocro.com/inspecode どんなツールがサポートしているのかなっと調べていたら 「ShellCheck」ってのがあったので調べてみた また、別記事で「shfmt」ってのみある。 shfmt ~ 入門編 …

【Shell】シェル ~ インストール済みかどうか調べる ~

■ はじめに 小ネタ。 Github Workflow の Self-Hosted runner で https://dk521123.hatenablog.com/entry/2024/03/01/163922 で扱った sqlfmt が command not found で見つからない という問題が発生している。(そのまま入って実行したら問題なし) そこで…

【Shell】シェル ~ Shebang ~

■ はじめに Github Actions や CloudFormation などの インフラ系のサービスを扱う際に、Bashをよく使用しているが Shebang (シェバン)のところとかあいまいなことがあるので これを機にちゃんと調べてみた 目次 【1】Shebang 【2】効能 【3】構文 【4】…

【Shell】シェル ~ 環境変数 IFS ~

■ はじめに 小ネタ。 CI/CD の処理の一環で、 テキストファイルにバージョンが指定されていて そのファイルを読み込んで、カウントアップした値を 処理で使いたいなっと思った時に、 IFS がでてきたので メモっておく 目次 【1】環境変数 IFS 【2】readコ…

【Shell】シェル ~ 文字列置換 ~

■ はじめに bashによる文字列置換をメモ。 【1】bashによる文字列置換 パースには、 以下の関連記事で扱った sedコマンドなど ではない方法「bashによる文字列置換」を使っている awkコマンド https://dk521123.hatenablog.com/entry/2019/11/22/223043 sed…

【Shell】 シェル ~ 非同期 ~

■ はじめに 小ネタ。 パフォーマンステストする際に、 Rest APIを(できる限り)同時にKickしたい時に 調べていたことをメモ。 目次 【1】シェルでの非同期処理 【2】サンプル 【1】シェルでの非同期処理 * (色々な方法があるみたいだが)実行したい行の…

【Hive】全Hiveテーブルを取得するには

■ はじめに https://dk521123.hatenablog.com/entry/2023/02/21/223137 の続き。 「show tables」だと、default データベース内のテーブル一覧しか取得できず AWS Glue の Data Catalog の表示もバグっているのか取得できないテーブルがある。 っという訳で…

【Git】リポジトリを別のGitに移行するシェル

■ はじめに 小ネタ。 https://dk521123.hatenablog.com/entry/2022/02/10/000000 でやったリポジトリを別のGitリポジトリに移動する作業があり、 そのリポジトリ数が、まーまーあって、 今後も同じようなことをやる可能性がありそうなので シェルスクリプト…

【Shell】AWS上のファイルを一部取得するシェル

■ はじめに AWS S3 上にあるファイルをダウンロードして 一部を取得するようなシェルを書く 目次 【1】今回の実装方針 【2】必要なライブラリ 【3】サンプル 【4】Tips 1)ディレクトリ配下のファイル名一覧を取得 【1】今回の実装方針 [1] 初期処理(…

【Shell】パイプを使ったループで連想配列に値を設定する

■ はじめに https://dk521123.hatenablog.com/entry/2021/08/13/120956 にあるように、CSVの値を連想配列に詰めて、 マップを作成しようとしたけど、失敗したので、 その解決策について、記しておく。 目次 【1】トラブル 【2】原因 【3】解決案 解決案1…

【Linux】リダイレクト・パイプライン

■ はじめに https://dk521123.hatenablog.com/entry/2021/09/11/000000 https://dk521123.hatenablog.com/entry/2021/09/12/000000 https://dk521123.hatenablog.com/entry/2021/09/23/223401 で、パイプラインに関して、少し触れたが、 今回は、掘り下げて…

【Linux】shoptコマンド

■ はじめに https://dk521123.hatenablog.com/entry/2021/09/23/223401 で触れた「shopt -s lastpipe」について よく分からなかったので調べてみた。 目次 【1】shoptコマンド 【2】構文 【3】主なオプション 【1】shoptコマンド * bashのシェルオプショ…

【Shell】シェル ~ 基本編 / 連想配列 - ディクショナリ ~

■ はじめに https://dk521123.hatenablog.com/entry/2021/08/11/000000 の続き。 今回は、連想配列を扱う。 目次 【1】連想配列 - ディクショナリ 【2】構文 1)定義方法 2)キーが存在しているか確認 【3】サンプル 例1:Hello world 例2:キーの存…

【Shell】シェルで split するには

■ はじめに シェルで、split する必要がでてきたので、メモしておく。 目次 【1】サンプル 例1:カンマ区切り 例2:ドット区切り(IPアドレス) 例3:export XXX1=YYY1;export XXX2=YYY2;... 【2】補足:配列の長さを求める 【1】サンプル 例1:カン…

【Shell】シェル ~ 基本編・eval ~

■ サンプル シェルで、変数名に val1,val2, ... って番号が振ってあって その変数をいちいち参照したくないからって探してたら eval(イーバル)があったので、メモしておく 目次 【1】eval コマンド 【2】使用上の注意 【3】サンプル 例1:Hello world …

【Shell】【PostgreSQL】シェルでSQL結果を受け取る ~ エラーハンドリング編 ~

■ はじめに https://dk521123.hatenablog.com/entry/2021/08/16/231459 の続き。 先日行ったシェルではエラーハンドリングまで考慮されていなかったので EMR上でStepごとにシェル実行した際に、そのStep内でエラーが発生しても、 途中でキャンセルにならずに…

【Shell】【PostgreSQL】シェルでSQL結果を受け取る

■ はじめに Amazon EMR で シェル経由で Amazon Redshift に対して SQL を実行し、 そのシェルが実行結果を受け取り、 結果によって、エラーにするか / 正常終了にするか ってことを実装したい。 そこで、まずは、Amazon Redshift の元となっている PostgreS…

【Shell】ファイルへの書き出し

■ はじめに 小ネタ。 ファイルの書き出しについて、意外と使うのでメモ。 Dockerなんかの簡単な設定ファイル作成にも便利。 目次 【1】ファイル出力 1)echo を使ったファイル出力 2)printf を使ったファイル出力 【2】使用上の注意 - printf 1)「%」…

【Shell】シェル ~ CSV / TSVファイルの読み込み ~

■ はじめに シェルで、ヘッダー付きのCSV / TSVファイルの読み込み その一部を列を配列として扱いたいので、調べてメモっておく。 目次 【1】CSVファイルを読み込み出力する 【2】ヘッダー(1行目)を除外して出力する 【3】TSVファイルを読み込む 【4】…

【Shell】シェル ~ 基本編 / 配列 ~

■ はじめに シェルの配列に関して、まとめておく。 目次 【0】シェルの配列種類 【1】配列 - リスト 1)定義方法 2)要素の追加 3)要素の削除 4)関数の引数・戻り値 5)配列のソート 【2】連想配列 - ディクショナリ 【0】シェルの配列種類 シェ…

【Shell】シェル ~ 基本編・ループ while / for etc ~

■ はじめに https://dk521123.hatenablog.com/entry/2015/02/20/001600 より分冊。 シェルのループについて、メモっておく。 目次 【1】while 1)構文 【2】for 1)構文 2)サンプル 例1:規定回数ループする 例2:拡張子「.sql」のファイル一覧表示 …

【Shell】シェル ~ 文字列抽出あれこれ ~

■ はじめに なんだかんだで、シェルスクリプト(Bsh)を扱う機会があって その中で文字列抽出をちょこちょこのだが、すぐに忘れてしまう、、、 で、ブログにまとめておいたつもりだったが、 全然まとまっていなかったので、今回で整理する。 また、cut / rev…

【Shell】シェル ~ 基本編・引数あれこれ ~

■ はじめに https://dk521123.hatenablog.com/entry/2021/07/09/115553 などで、シェルを使う機会があり、引数を使って もう少しきれいに書けるので、メモ。 目次 【1】引数を取得する 例1:引数を変数に設定 【2】引数チェック 例1:引数が3つない場合…

【Shell】シェル ~ ファイル処理あれこれ ~

■ はじめに シェルで何かを行う際に、あの時のあの処理ってどう書いたっけ? ってことが多いので、メモ。 目次 【1】ファイル名を取り出す 【2】ファイル内容を表示する 【3】特定の拡張子でループさせる 【4】拡張子を別拡張子に置き換える 【5】ファ…

【Shell】 シェルで部分一致(前方一致・後方一致)

■ はじめに 小ネタ。 前方一致をやりたくて調べたら、 意外と grep を使ったりとかが多かった。 ただ、もっとシンプルにできる方法があったので、メモ。 目次 【1】部分一致(前方一致・後方一致) 【2】サンプル 例1:前方一致 例2:後方一致 例3:部…

【Shell】JDBC を シェルスクリプトでパースする

■ はじめに PostgreSQL / Redshift の JDBC URL をシェルスクリプトでパースして 各要素を参照する可能性があるので、 以下のサイトを参考にサンプルを実装してみる https://pslabo.hatenablog.com/entry/20150323/p1 別解:cut / rev コマンドによる方法 cu…

【Shell】シェルでのバックアップ / リストア に関するあれこれ

■ はじめに シェルでのバックアップ / リストア に関する処理で よく使うTipsを纏めておく。 目次 【1】外部ファイル取り込み 【2】日付/日時を付加するには 【3】古いファイルを削除 【4】ディレクトリ内の指定した拡張子のファイル名を取得する 【5】…

【Shell】Javaを実行するシェルスクリプト

■ はじめに Java を実行するシェルスクリプトをメモ。 目次 【1】Javaのclassファイルを実行する 【2】実行可能JARファイルを実行する 【1】Javaのclassファイルを実行する サンプル #!/bin/bash # 【オプション】環境変数 export JAVA_HOME=/usr/local/j…

【Shell】シェル ~ あれこれ編 ~

■ はじめに シェルスクリプトに関するメモ。 ファイルに関する処理あれこれ https://dk521123.hatenablog.com/entry/2020/09/28/000000 目次 【1】文字列チェック 【2】カレントディレクトリを取得するには... 【3】外部ファイルを読み込むには... 【4】…