2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

シェルスクリプト(Shell Script)内で引数($1、$2...)を設定する方法

Last updated at Posted at 2023-05-24

問題の所在

シェルスクリプトでは、引数を付けて起動すると、引数$1$2...として使うことができます。

例えば、

#!/bin/sh
echo "$1"
echo "$2"

というシェルスクリプトを"test.sh"という名前で作り、

> test.sh foo bar

と実行すれば、

> test.sh foo bar
foo
bar

という実行結果が得られます。

通常はこれで十分なのですが、まれにシェルスクリプト内で引数を設定したい場合があります。
例えば、引数がない場合には、デフォルトの値を使うような場合です。

ダメな方法

引数がない場合は、引数$1に"baz"を、引数$2に"qux"を設定する場合を考えてみます。

そのような場合に、通常の変数の設定と同じように、

#!/bin/sh
if [ $# -eq 0 ]; then
    1=baz
    2=qux
fi

などとすると、エラーになります。シェル変数の名前には、先頭の文字に数字は使えないというルールがあるためです。

正しい方法

このような場合には、setを使い、

#!/bin/sh
if [ $# -eq 0 ]; then
    set -- baz qux
fi

とします。これで、引数$1に"baz"が、引数$2に"qux"が設定されます。

あまり使わないのですが、あまり使わないだけに、使いたいときに思い出せずに困るので、備忘のためにも記事にしておきます。

注)"foo"、"bar"、"baz"、"qux"は、日本語の"〇〇"とか"なになに"とかと同じで、特に意味のない文字列です。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?