Shell script」カテゴリーアーカイブ

Linuxで使えるシェルスクリプトに関するカテゴリーです。

Shellスクリプトでif文の使い方メモ

個人的によく使うif文の書き方をメモです。

使い方

if [ 条件 ]
then
  # 実行したいコマンド
elif [ 条件 ]
then
  # 実行したいコマンド
else
  # 実行したいコマンド
fi

elifが不要な場合はelifからの3行、elseが不要な場合はelseからの2行を削除してください。thenをよく忘れるので気をつけてください。

サンプル1

Shellスクリプトのコマンドラインオプション(数字)によって実行する内容を変えるサンプル。

$ cat example1.sh
#!/bin/sh
if [ "$1" -eq 10 ]
then
  echo aaa
else
  echo bbb
fi
$ ./example1.sh 10
aaa
$ ./example1.sh 20
bbb

-eq(equal)の他にも-ge(greater than or equal)-gt(greater than)-le(less than or equal)-lt(less than)-ne(not equal)なども使えます。

サンプル2

shellスクリプトのシンボリックリンクを作成して、ファイル名によって実行する内容を変えるサンプル。

$ cat example2.sh
#!/bin/sh
if [ `basename $0` = "exampleA.sh" ]
then
  echo AAA
else
  echo 222
fi
$ ln -s example2.sh exampleA.sh
$ ./example2.sh
222
$ ./exampleA.sh
AAA

シェル(bash)でスペースの代わりに改行区切りでforループする方法

シェル(bash)のforループを使うとスペース区切りの文字列でループしてコマンドを実行することができます。(参考:forループに関する覚え書き

便利な機能ですがスペースではなく改行\nでループしたい場合もあるかと思います。そういう場合にはIFSを使ってdelimiterを変更するテクニックがあるそうです。

使い方

今回は次のようなテキストファイルを使って1行ずつコマンドを実行するサンプルを紹介してみます。

$ cat example.txt
aaa 12 34
bbb 56 78
ccc 90 12

普通にforループした場合

$ for i in `cat example.txt`; do echo $i; done
aaa
12
34
bbb
56
78
ccc
90
12

delimiterを\nに設定した場合

$ IFS=$'\n'
$ for i in `cat example.txt`; do echo $i; done
aaa 12 34
bbb 56 78
ccc 90 12

こんな感じで1行ずつコマンドを実行できます。

ImageMagickのconvertを使ってfaviconを作成するコマンド

ImageMagickのconvertを使ってfaviconを作成したい場合は次のようなコマンドを実行すると良いそうです。

$ convert source.png -define icon:auto-resize favicon.ico

16×16、24×24、32×32、40×40、48×48、64×64、96×96、128×128、192×192、256×256のマルチアイコンとなるようです。含めるサイズを指定したい場合は

$ convert source.png -define icon:auto-resize=64,48,32,16 favicon.ico

のような感じで実行します。

HTMLのヘッダーへの書き方

favicon.icoの場合は指定する必要はありませんが、ファイル名やパスを変更したい場合はHTMLのヘッダーに

<link rel="shortcut icon" href="/path/to/icon.ico">

のような記述を追加すると良いようです。

リンク

[SOLVED] PNG to ICO while preserving transparency – ImageMagick
http://www.imagemagick.org/discourse-server/viewtopic.php?t=26252

html – Favicon: .ico or .png / correct tags? – Stack Overflow
https://stackoverflow.com/questions/6121725/favicon-ico-or-png-correct-tags