Shell

【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:Hello world 【1】サンプル 例1:Hello world #!/bin/bash # Ex1 val="Hello,World,!!!" # ${変数名//置換前文字列/置換後文字列} list=(${val//,/ }) echo…

【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 を シェルスクリプトでパースする ~ bashによる文字列置換 ~

■ はじめに 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】カレ…

【Shell】【PostgreSQL】PostgreSQLをエクスポート/インポートするスクリプト

■ はじめに pg_dumpall or pg_dump / pg_restore を使う。 pg_dumpall / pg_dump / pg_restore については、以下の関連記事を参照のこと。 ■ 実行環境 * OS : Debian8 * DB : PostgreSQL v9.4.15 詳しい設定については、以下の関連記事を参照のこと。 ■ バッ…

【Shell】ヒアドキュメント ~ 複数行の テキストをファイル出力する ~

■ はじめに シェルの可読性をあげるために よく使う「ヒアドキュメント」について、メモっておく。 目次 【1】ヒアドキュメント 【2】構文 【3】サンプル 【4】おまけ:複数行の文字列を変数に格納 【1】ヒアドキュメント * 複数行の文字列を簡潔に記述…

【Shell】シェル ~ 基本編・条件分岐 if / case ~

■ はじめに シェルの条件式をメモ。 目次 【1】if文 1)構文 a) if - else b) if - elif - else 2)条件式 a) 数値の比較 b) 文字列の比較 c) ファイルの比較 3)その他事項 a) AND b) OR c) NOT 4)サンプル 例1:数値の比較 例2:引数チェック - He…

【Shell】 シェル ~ ファイル・ディレクトリの扱い cp/rm/mkdir etc ~

■ コピー cp <オプション> [コピー元] [コピー先] オプション オプション 意味 備考 -r ディレクトリを再帰的にコピーする --recursive(再帰的な) -f 警告せず、上書きを行う --force(強制的にコピーする) -p パーミッションを保持したままコピー --preser…

【Shell】ログバックアップを考える & 簡易スクリプトの作成

■ はじめに Apache や Tomcat 等でログが出力されるが、 そのまま放置したら大量なログが出てしまう可能性がある。 その一つの解決策として、定期的に圧縮してバックアップを取る といった事を考えられるので、その方法を調べ、簡易的なものを作ってみる ■ …

【Shell】シェル ~ 基本編・関数 ~

■ Hello World * まず、以下に「Hello World」的なサンプルを記す サンプル #!/bin/bash sample_function () { echo "Hello World!" } sample_function ■ 構文 関数本体 【関数名】() { # 処理 } 関数呼び出し () はいらない 【関数名】 ■ 関数の引数 * 関数…

【Shell】シェル ~ 基本編・構文全般 ~

■ はじめに シェルスクリプトの基本的な構文・文法を纏める。 目次 【0】注意事項 【1】「#!/bin/sh」「#!/bin/bash」 【2】変数 / 定数 【3】配列 【4】連結 【5】囲い文字 【6】標準出力 【7】条件分岐 【8】ループ 【9】引数 【0】注意事項 * …

【Shell】シェル ~ 入門編 ~

■ シェル * ユーザからの操作を受け取った結果を表示するソフトウェア ■ シェルの種類 sh : Bourne シェル / POSIX シェル * 標準のシェル bash : バッシュ(bourne-again shell) * Bourne シェルを元に機能拡張したシェル * Linux で標準シェルとして採用 …

【PostgreSQL】ファイルからSQL文を一括で実行するには ~pdqlコマンドの利用~

■ はじめに * 開発環境設定やテストデータ作成の際に いちいち作ったりするのが面倒なので、 ファイルにして残しておけば、自分だけじゃなく 別の開発メンバーにも役立つので ファイルからSQL文を一括で実行する方法を調べてみた。 補足:pdql コマンド 以下…

【Shell】bash-completion ~ 入力補完 ~

■ インストール Debian系 sudo apt-get install bash-completion RedHat系 # CentOS sudo yum install bash-completion 参考文献 http://qiita.com/fetaro/items/8cf5169dc4d8a7ac9af6 https://cheaparchitec.wordpress.com/2016/07/01/centos7%E3%82%B3%E3%…