タグ

ブックマーク / kiririmode.hatenablog.jp (3)

  • シェルスクリプトにおける [ と [[ - 理系学生日記

    シェルスクリプトで条件分岐を書くとき、[ を使ったり [[ を使ったりすることになると思います。 POSIX の test にも記載がありあすが、[ は test と同じ機能を持つことになっており、同じ実装であることも多いです (ただし、[ として実行されるか、test として実行されるかに依って挙動が変わり得る)。 一方で、[[ は POSIX で定義はされていない、Bash 等の高機能シェルでの拡張になります。 [ と [[ は、当然ながら同じような機能を持っています。そりゃ、後者は前者の拡張ですからね。一方で、「拡張」であるが故に、[ と [[ で異なる挙動も存在します。 演算子 たとえば比較の演算としては以下のような挙動のちがいがあったりします。なお、[ への有無については、POSIX 定義という観点であって、シェル実装によっては普通に使えるものもあります。 機能 [ [[ 備考

    シェルスクリプトにおける [ と [[ - 理系学生日記
  • 終わり行く2017年にgrepを - 理系学生日記

    みんな大好き grep についてですが、かなり機能が豊富な一方でなかなかそれがまとまっていないこともあるのと、自分自身、結構細かな Tips を忘れたりするので、ここで簡単にまとめてみたいと思います。 OR 検索 後述する拡張正規表現でも可能といえば可能ですが、サクっとできるのは -e (--regexp) を複数与えることです。 $ grep -e abc -e xyz hoge.txt abcdefg vwxyz この OR 条件がときどき変わって、その都度シェルスクリプトを変えたくないという場合、これらの条件は外出しすることも検討して良いでしょう。外出ししたファイルには、条件を 1 行 1 条件で並べます。 このファイルを -f (--file=filename) で与えれば、grep はそれらを OR 条件として解釈します。 $ cat cond.dat abc xyz $ gre

    終わり行く2017年にgrepを - 理系学生日記
    remixed
    remixed 2022/05/02
    grepの知らなかったけど知ってると便利なオプションがたくさん
  • BashのGlobは積極的に利用しましょう - 理系学生日記

    bash には glob というものがあります。glob ってなによっていう人も ls *.sh とかを展開する bash の機能ですよっていうと分かるかと思います。 この glob の機能って多用されますがあまりマニュアルとか読んだ人もいないと思うので、簡単にまとめてみます。 1. Pattern Matching Glob のパターンマッチングに使用できる文字のパターンっていうのは、通常、次の文字です。 *: 何にでもマッチする ?: 任意の一文字にマッチする [...]: [ と ] の間に記述された任意の文字にマッチする。これはちょっとややこしいので、もうちょっとまとめます。 [...] [...] の ... には通常として文字の集合を指定できますが、多少表現力のあるものも指定できます。 次のように、ハイフン- で指定された範囲のみにマッチさせたりできますし、 $ ls test

    BashのGlobは積極的に利用しましょう - 理系学生日記
  • 1