bash」タグアーカイブ

Bashでファイル名から拡張子とそれ以外の部分を分離する簡単な方法

example.txtというファイル名から拡張子とそれ以外の部分で分離するサンプル

$ full="example.txt"
$ extension=${full##*.}
$ filename=${full%.*}
$ echo $extension
txt
$ echo $filename
example

/path/to/example.txtのようなフルパスからディレクトリ部分を取り除くのはbasenameコマンドでできます。

$ basename /path/to/example.txt
example.txt

リンク

Bash Reference Manual: Shell Parameter Expansion
http://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html

Shellのコマンドライン引数の扱い方

コマンドライン引数の取得(表示)

$ cat sample1.sh
#!/bin/sh
echo 1st: $1
echo 2nd: $2
echo all: $@
$ ./sample1.sh aaa bbb ccc
1st: aaa
2nd: bbb
all: aaa bbb ccc

コマンドライン引数の個数

$ cat sample2.sh
#!/bin/sh
echo $#
$ ./sample2.sh aaa bbb ccc
3

引数を順番に取得(表示)するサンプル

$ cat sample3.sh
#!/bin/sh
while [ $# -ne 0 ]
do
  echo $1
  shift
done
$ ./sample3.sh aaa bbb ccc
aaa
bbb
ccc

echo $1の部分を書き換えることで任意のコマンドを実行することができます。