「シェルスクリプトの基礎 - コマンドライン引数」の版間の差分

📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

編集の要約なし
36行目: 36行目:
パラメータの取得には、$1〜$9が使用できる。<br>
パラメータの取得には、$1〜$9が使用できる。<br>
10番目以降のパラメータを参照する場合は、${10}のように数値を{}で囲めば参照できる。<br>
10番目以降のパラメータを参照する場合は、${10}のように数値を{}で囲めば参照できる。<br>
  <source lang="sh">
  <syntaxhighlight lang="sh">
  #!/bin/sh
  #!/bin/sh
   
   
42行目: 42行目:
  echo '$2 =' "$2"
  echo '$2 =' "$2"
  echo '$3 =' "$3"
  echo '$3 =' "$3"
  </source>
  </syntaxhighlight>
<br>
<br>
  # 実行
  # 実行
108行目: 108行目:
パラメータが指定されなかった時のために、デフォルト値を指定しておくこともできる。<br>
パラメータが指定されなかった時のために、デフォルト値を指定しておくこともできる。<br>
下記の例では、1番目、2番目、3番目のパラメータの初期値を、それぞれ、100、200、300 に設定している。<br>
下記の例では、1番目、2番目、3番目のパラメータの初期値を、それぞれ、100、200、300 に設定している。<br>
  <source lang="sh">
  <syntaxhighlight lang="sh">
  #!/bin/sh
  #!/bin/sh
   
   
114行目: 114行目:
  echo '$2 =' "${2:-200}"
  echo '$2 =' "${2:-200}"
  echo '$3 =' "${3:-300}"
  echo '$3 =' "${3:-300}"
  </source>
  </syntaxhighlight>
<br>
<br>
  # 実行
  # 実行
129行目: 129行目:
シェルスクリプト実行時に渡されたパラメータは、特殊変数$@を使用して参照することができる。<br>
シェルスクリプト実行時に渡されたパラメータは、特殊変数$@を使用して参照することができる。<br>
以下の例では、for文を使用して、$@の要素を1つずつ抽出して処理している。(カウンタ変数$countをインクリメントしながらループしている)<br>
以下の例では、for文を使用して、$@の要素を1つずつ抽出して処理している。(カウンタ変数$countをインクリメントしながらループしている)<br>
  <source lang="sh">
  <syntaxhighlight lang="sh">
  #!/bin/sh
  #!/bin/sh
   
   
138行目: 138行目:
     let count=$count+1
     let count=$count+1
  done
  done
  </source>
  </syntaxhighlight>
<br>
<br>
  # 実行
  # 実行
150行目: 150行目:
また、特殊変数の指定部分<code>in "$@"</code>は省略して記述することができる。<br>
また、特殊変数の指定部分<code>in "$@"</code>は省略して記述することができる。<br>
明示的にin "$@"を記述する場合は、$@の部分をダブルクォーテーションで囲むことに注意する。<br>
明示的にin "$@"を記述する場合は、$@の部分をダブルクォーテーションで囲むことに注意する。<br>
  <source lang="sh">
  <syntaxhighlight lang="sh">
  #!/bin/sh
  #!/bin/sh
   
   
160行目: 160行目:
     let count=$count+1
     let count=$count+1
  done
  done
  </source>
  </syntaxhighlight>
<br>
<br>
===== while文を使用する方法 =====
===== while文を使用する方法 =====
169行目: 169行目:
$1はパラメータの最初の要素を参照する変数であるが、直後のshiftによってパラメータを1つずつシフトしているので、<br>
$1はパラメータの最初の要素を参照する変数であるが、直後のshiftによってパラメータを1つずつシフトしているので、<br>
結果として、全てのパラメータを順番に参照することができる。<br>
結果として、全てのパラメータを順番に参照することができる。<br>
  <source lang="sh">
  <syntaxhighlight lang="sh">
  #!/bin/sh
  #!/bin/sh
   
   
180行目: 180行目:
     let count=$count+1
     let count=$count+1
  done
  done
  </source>
  </syntaxhighlight>
<br>
<br>
  # 実行
  # 実行
195行目: 195行目:
$@が各パラメータを個別に保持しているのに対し、$*は全てのパラメータを結合した1つの文字列である。<br>
$@が各パラメータを個別に保持しているのに対し、$*は全てのパラメータを結合した1つの文字列である。<br>
それぞれ、ダブルクォートで囲んで参照した場合と、囲まずに参照した場合の展開方法も含めて理解する。<br>
それぞれ、ダブルクォートで囲んで参照した場合と、囲まずに参照した場合の展開方法も含めて理解する。<br>
  <source lang="sh">
  <syntaxhighlight lang="sh">
  #!/bin/sh
  #!/bin/sh
   
   
221行目: 221行目:
     echo "$arg"
     echo "$arg"
  done
  done
  </source>
  </syntaxhighlight>
<br>
<br>
  # 実行
  # 実行
272行目: 272行目:
以下の例では、<code>shift</code>コマンドを実行して$1の値を出力し続けている。<br>
以下の例では、<code>shift</code>コマンドを実行して$1の値を出力し続けている。<br>
<code>shift</code>コマンドにより、3つの引数が順番にシフトされている。<br>
<code>shift</code>コマンドにより、3つの引数が順番にシフトされている。<br>
  <source lang="sh">
  <syntaxhighlight lang="sh">
  #!/bin/sh
  #!/bin/sh
   
   
289行目: 289行目:
  param = b
  param = b
  param = c
  param = c
  </source>
  </syntaxhighlight>
<br><br>
<br><br>


__FORCETOC__
__FORCETOC__
[[カテゴリ:シェルスクリプト]]
[[カテゴリ:シェルスクリプト]]