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の部分を書き換えることで任意のコマンドを実行することができます。

関連記事

shellを使ったファイル名の一括リネーム
カレントディレクトリにある*.logファイルの拡張子を.txtに変更するサンプル 注 $ for i in *.log; do mv $i `basename -s .log $i`.txt; done 注 basenameコマンドに-sオプションを使うと末尾の文字列を削除できます。 ...

Bashでファイル名から拡張子とそれ以外の部分を分離する簡単な方法
example.txtというファイル名から拡張子とそれ以外の部分で分離するサンプル $ full="example.txt" $ extension=${full##*.} $ filename=${full%.*} $ echo $extension txt $ echo $filename example /path/to/example.txtのようなフルパスからディレクトリ部...

Bashで連続した数字のループを回す簡単な方法
{1..5}のようにすることで、1〜5でループすることができます。 for i in {1..5} do echo $i done {..}はループ以外でも使うことができるので便利です。 $ touch file-{1..5}.txt $ ls file-1.txt file-2.txt file-3.txt file-4.txt file-5.txt リンク...

シェル(bash)でスペースの代わりに改行区切りでforループする方法
シェル(bash)のforループを使うとスペース区切りの文字列でループしてコマンドを実行することができます。(参考:forループに関する覚え書き) 便利な機能ですがスペースではなく改行\nでループしたい場合もあるかと思います。そういう場合にはIFSを使ってdelimiterを変更するテクニックがあるそうです。 使い方 今回は次のようなテキストファイルを使って1行ずつコマンドを実...

Shellスクリプトでif文の使い方メモ
個人的によく使うif文の書き方をメモです。 使い方 if [ 条件 ] then # 実行したいコマンド elif [ 条件 ] then # 実行したいコマンド else # 実行したいコマンド fi elifが不要な場合はelifからの3行、elseが不要な場合はelseからの2行を削除してください。thenをよく忘れるので気をつけてください。 ...

Shellスクリプトでcase文の使い方メモ
bash(sh)でcase文を書くときの基本は次のような感じです。 case $変数 in パターン1) 実行したい内容1 ;; パターン2) 実行したい内容2 ;; esac ということで、case文でよく使われるパターンを2つほど紹介してみようと思います。 曜日ごとに異なる内容を実行したい場合(cronで便利です) case `...

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です