bashで変数で文字列を部分的に取得する ${DATA:0:6} みたいにすると、頭から6文字取ってくるようになるんですが、 色々な言語をやってると、「あれ、先頭って0だっけ、1だっけ?」ってなります。 間違えて1で入力して、2文字目から取ってきたこともしばしば。 ...
もっと読む
カテゴリ: bash
bashのオプションで変数未定義を検知 set -u
bashのオプションで変数未定義を検知 set -u bashでスクリプト作っていると、変数をよく使うようになります。 変数が未定義の場合、空が入っている形になるんですが、そもそも空のときの挙動を考えていない場合も。 変数がタイポで間違えている時に、「値が入っているは ...
もっと読む
bashの変数でパターン一致取得
bashの変数でパターン一致取得 DATA=YYYYMMDD-YYYYMMDD みたいなデータで、1つめ、2つめを個別に変数に入れたい、 となったときに、今までは文字数で切っていたのですが、 FROM_DATA=${DATA:0:8} ハイフンとのパターンマッチで行けるっぽい、ということが分か ...
もっと読む
bash の変数で、変数内の文字数を知る方法
bash の変数で、変数内の文字数を知る方法 そう言えばどうやるんだろう、と思って調べたら、#でした。 ${#aaa} これで文字数が取得出来る。 例えば、 if [ ${#YYYYMM} = 6 ];then YYYYMM+="01" fi とか。 参考: http://linux.just4fun.biz/?%E9 ...
もっと読む
bash でファイル存在チェックを複数行うif文
bash でファイル存在チェックを複数行うif文 if [ -e "$file" ]; then とすると、ファイルの存在チェックは出来るが、 「複数のファイルが存在している」or「1つも存在しない」 というチェックの場合、-eだと対応できない。 ので調べたら、こういう表記があった ...
もっと読む
echoで改行を出力
echoで改行を出力 echoで文字を出力するときに、改行をスクリプト内で直接改行していたのですが、 \n効かないのかな? と思って調べたら、オプションだったんですね。 echo -e "AAA\nBBB" これで、 AAA BBB となります。 が、ダブルコーテーションで囲わな ...
もっと読む
bashの変数指定で、間接展開(!:エクスクラメーション)
bashの変数指定で、間接展開(!:エクスクラメーション) 他の人が作ったプログラムを見ていたら、以下のような指定がありました。 echo ${!xxxx} なんだろうこれ、と思って調べたら、間接展開という表記法でした。 ようするに、変数の値を変数名として使用する ...
もっと読む
bashで変数の複数回置換
bashで変数の複数回置換 変数内のデータを2回置換しようと思ったんですが、そもそも変数の通常の置換方法だと、どうやって書くんだろう? という所から調べてみました。 DATA=”aaa,bbb,aaa” echo ”${DATA//aaa/ccc}” 1回置換。これはそのまま出来る。 結果:ccc,bb ...
もっと読む
bashのifのイコールについて(=、==)
bashのifのイコールについて(=、==) 以前、記事でこんなことを書いたんですが、 http://workmemo.techblog.jp/archives/11296737.html >{string1} = {string2} 二つの文字列が等しければ真。== ではない >のに注意してください。(!strcmp(string1 , string2)) ...
もっと読む
bashで、ファイルがテキスト形式か判断するif文
bashで、ファイルがテキスト形式か判断するif文 EXCELファイルをシステムに食わせる人がいて、テキストファイルの時だけ動くようにしようと思って、ちょっとハマった話。 判断は緩く、ファイルがASCII型ならOK、としようと思いました。 if [ $(file {tgt_file} | gr ...
もっと読む