shell
シェルスクリプトでこんな変数の加工の仕方を知りませんでした。 まず下記のサンプルプログラムを見てみましょう。 $ HOGEHOGE_VAL="aaa/bbb/ccc/ddd/eee" $ echo ${HOGEHOGE_VAL} aaa/bbb/ccc/ddd/eee $ echo ${HOGEHOGE_VAL%/*} aaa/bbb/ccc/ddd $ echo ${…
新しいシェルプログラミングの教科書作者:三宅 英明出版社/メーカー: SBクリエイティブ発売日: 2017/11/21メディア: 単行本シェルプログラミングは得意ですか?シェルプログラミングって苦手だったんですよね。っというか嫌い....。なぜかというと、何となく…
シェルスクリプトでブロックコメントを作る方法を知ってますか?ブロックコメントはpythonでいう"""(ダブルクオート3つ)や'''(シングルクオート3つ)で囲んだコメント、またjavaで言えば/*.....*/といったように書くコメントです。1行コメントは # でコメント…
シェルスクリプトを実行するときに、いくつになるかわからない引数を全て使いたいときがあります。 例えば作ったファイルを全て何か処理したいとき、いくつの引数になるかわかりません。そういったときに可変長引数を使うと便利です。可変長引数は ${@} です…
こんにちは suganoo です。シェルスクリプトを書いてたりLinuxのコマンドをたたいてると単純な計算をしたいときがあります。単純な足し算やfor文内のインクリメントとか。そんなんであれば $((...)) でどうにかなります。例えば足し算なら CNT=$(( CNT + 1 )…
こんにちは suganoo です。シェルスクリプトを書いていて配列ってどうやるんだっけ?っとたびたび調べることが多いので記事に書いておこうと思います。 コマンドの結果を配列にする まずコマンドの結果を配列に入れる方法 FILE_LIST=(`ls`)コマンドを``で囲…
探してみたらけっこうやり方あるみたいですね。 でも備忘のため書いておきます。そもそもなんでinode番号指定で消す必要があるのか?ですが、こんなことがありました。 一行一行ファイル名を書いたリストを作る そのリストを読み込む 1行づつ書いてあるファ…
あるユーザー(foobar)ユーザーを作ったからsudo権限をつけたい。 それをスクリプトから実行したい。としたとき、どうすればいいか?ちょっと悩みました。/etc/sudoersは直接編集できないし。。。 visudo でなにかしらのインプットはできない感じだし。そした…
シェルスクリプトで初歩的なミスをしてました。それに気づくまでに半日くらいかかってしまい すげー自己嫌悪でガッカリです。同じ轍を踏まないようにブログに書いておきます。 クイズ 下記のシェルスクリプトはエラーになりますが なんでだかわかりますか? …
たまにjsonの中身に\nが入ってて 「なんでこんなの入ってるのかなー?邪魔だなー」と思ってました。 わざわざ取り除くのがめんどうだなーと削除してました。例えばAWSのSQSメッセージを見てそのままechoで出力しようとすると \nが入ってて適切に出力されず、…
シェルのコマンド理解してますか?僕はうろ覚えでやってます。 昔こうやってた、で覚えて今はそのまま何も考えずに そのオプションをつけてコマンド実行とかやってます。 最近になるとman で調べるのもおっくうで。。。でもこんなんではダメエンジニアになっ…
たまーにあるんだけど windowsで作ったファイルをlinuxで読み込むと BOMが入ったり、末尾に改行がなかったりする。その末尾の改行がないファイルを読み込むと 最後の行が読み飛ばされることがあった。気づくまですげーめんどくさかった。。。 まあ解決方法は…
これでOK curl -LI http://google.com/ # いろいろ返ってきますがリクエストの結果が返ってきます HTTP/1.1 200 OK Date: Tue, 10 Jul 2018 07:39:16 GMT Expires: -1 Cache-Control: private, max-age=0 Content-Type: text/html; charset=ISO-8859-1 P3P: …
正規表現を確かめるのに このサイトは便利だった。regex101.com ログをパースするとかけっこう悩むんですよね。 他にも探してみるといろいろありました。 regexper.com qiita.com regex-testdrive.comやっぱ自分は最初のサイトの方が使いやすいかな。 詳説 …
シェルスクリプトでちょっとした計算したい時のメモ いくつか方法はありますが、下記が簡単二重カッコをつけるとできる。 XXX="90" YYY=$((${XXX}+10)) echo ${YYY} # <-- 100 他にもexpr でもできるけど 掛け算はダブルクオート("*") つけないとだめとか制…
シェルスクリプトを書いててtsv形式のファイルを読み込んで パースする時にちょっと困った。単純に while read LINE で読み込んで cut でもすればいいだろうと思ったら どうもうまくいかない。どうやら勝手にタブがスペースになっているようだ。理由はよくわ…
みたいです。これはちょっとハマりました。 ヒアドキュメントとは ヒアドキュメントという機能を知っていますでしょうか?簡単に言えば複数行で文字列を表示させる機能です。 Qiitaで探すといっぱいでてきます。 詳しい機能は下記など、いろいろ探してみてく…
あんまりシェルスクリプトは好きじゃないんだけど インフラやってるとシェルスクリプトを書くことがある。その中で他人が書いたコマンドに trap というコマンドがあった。罠…??なんかおどろおどろしい感じがしたけど 調べてみると、なんとまあ便利なコマンド…
サーバーでのちょっとした処理をpythonで書くことがあるんだけど pythonからシェルを実行するのどうやるんだっけ? 毎回忘れてしまうので、メモしておく。 とりあえずの使い方 import subprocess cmd = "ls -l" subprocess.Popen(cmd, shell=True) subproces…