とくにあぶなくないRiSKのブログ

危ないRiSKのブログだったかもしれない。本当はRiSKだけどググラビリティとか取得できるIDの都合でsscriskも使ったり。

「入門bash 第3版」を読む(7)

Windows な私がすっかりだらけきって Cygwin + bash をあしらう記録。

進捗

124/348

メモ

  • if [ -n "$DIR_STACK" ] がどのように構文解析されているのか分からない。
    • 試してみたけど,スペースが必須みたい。しかも,構文エラーになる場合と,ならない(で真になる)場合とがある。意味不明。
  • if [ $header = '-h' ];then のイコールの前後のスペースも必要みたい。なんだこれ。

P121 highest を改造+ショートコーディング

highest
([ -z "$1" ]&&echo 'usage: highest filename [-N [-h]]')||[ "$3" = '-h' ]&&echo -en "ALBUMS  ARTIST\n";sort -nr $1|head ${2:--10}

ifを消せるのはC言語とおんなじ。"$3"を$3と書いてなぜ構文エラーになるのか悩んじゃった。第3引数が無いときに "" という文字列になる*1か,完全に消えてしまう*2かの違いでした。

実行結果
~ $>./highest myfile
5       Depeche Mode
3       Simple Minds
2       Split Enz
1       Vivaldi, Antonio
~ $>./highest myfile -2
5       Depeche Mode
3       Simple Minds
~ $>./highest myfile -1 -h
ALBUMS  ARTIST
5       Depeche Mode
~ $>

メモ

  • P124のテクニックをさっきすでに使った件について。ゴルフ脳。

*1:[ "" = '-h']

*2:[ = '-h' ]