<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>技術ブログ &#124; 株式会社クラウディア &#187; シェルスクリプト</title>
	<atom:link href="https://cloudear.jp/blog/?cat=27&#038;feed=rss2" rel="self" type="application/rss+xml" />
	<link>https://cloudear.jp/blog</link>
	<description>クラウド専門の業務システム・社内ツール開発</description>
	<lastBuildDate>Fri, 12 Nov 2021 05:00:35 +0000</lastBuildDate>
	<language>ja</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.0.1</generator>
	<item>
		<title>シェルスクリプトで引数を受ける方法</title>
		<link>https://cloudear.jp/blog/?p=228</link>
		<comments>https://cloudear.jp/blog/?p=228#comments</comments>
		<pubDate>Sun, 23 Nov 2014 11:25:45 +0000</pubDate>
		<dc:creator><![CDATA[masa]]></dc:creator>
				<category><![CDATA[インフラ]]></category>
		<category><![CDATA[サーバー]]></category>
		<category><![CDATA[シェルスクリプト]]></category>

		<guid isPermaLink="false">https://cloudear.jp/blog/?p=228</guid>
		<description><![CDATA[シェルスクリプトを作るときに処理を簡単に分岐できてグンと使いやすくなる、そんな引数を受け取る方法をご紹介。 まず、今回登場していただくのは『getopts』というもの。これを使うことで簡単にユーザーが打った引数を受けるこ [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>シェルスクリプトを作るときに処理を簡単に分岐できてグンと使いやすくなる、そんな引数を受け取る方法をご紹介。<br />
<span id="more-228"></span><br />
まず、今回登場していただくのは『getopts』というもの。これを使うことで簡単にユーザーが打った引数を受けることができます(｀・ω・´)<br />
<strong>何はともあれ基本形を超シンプルに書いてみました↓</strong></p>
<pre class="lang:default decode:true ">#!/bin/bash

while getopts e: OPT #OPTの部分は何でもOK
do
  case $OPT in       #上で指定した変数名を指定
    e) num=$OPTARG   #ここは決まりで$OPTARGで受け取ることが出来る
       ;;
  esac
done

echo $num            #-e の後ろに指定された値が入る</pre>
<p>3行目の『e:』の意味は、『hoge.sh -e』で引数を受けますよという宣言。6行目は普通のcase文ですが、引数として『-e &#8220;ココ&#8221;』が入ってくるとその値が $OPTARG に格納されます。</p>
<p><strong>実行結果↓</strong></p>
<pre class="nums:false lang:default decode:true">./hoge.sh -e "うひょ"
うひょ</pre>
<p><strong>実際、上記のような使い方は意味がないので、『-e 1』とかそれっぽく引数を取り、処理を分岐までやってみます。↓</strong></p>
<pre class="lang:default decode:true ">#!/bin/bash

while getopts e:p: OPT #-p も追加してみる
do
  case $OPT in
    e) e_num=$OPTARG
       ;;
    p) p_num=$OPTARG
       ;;
  esac
done

case $e_num in
  1) echo "今月は1月です"
     ;;
  2) echo "今月は2月です"
     ;;
  3) echo "今月は3月です"
     ;;
esac

case $p_num in
  1) ping -c1 google.com
     ;;
  2) ping -c1 yahoo.co.jp
     ;;
  3) ping -c1 adobe.com
     ;;
esac</pre>
<p><strong>実行結果↓</strong></p>
<pre class="nums:false lang:default decode:true ">./hoge.sh -e1
今月は1月です

./hoge.sh -e2                                                                    
今月は2月です

./hoge.sh -e3                                                                    
今月は3月です

./hoge.sh -p1                                                                      
PING google.com (173.194.120.67) 56(84) bytes of data.
64 bytes from nrt13s18-in-f3.1e100.net (173.194.120.67): icmp_seq=1 ttl=58 time=2.39 ms

#以下省略</pre>
<p>上記の通り -e と -p そしてその後ろの数字によって処理が分かれていますね。</p>
<p>いかがでしたか？<br />
今回はシェルスクリプトで引数を受けて、処理を分岐させる方法をご紹介しました。みなさんもこれで自分オリジナルのクールなコマンドを作ってみてください。</p>
]]></content:encoded>
			<wfw:commentRss>https://cloudear.jp/blog/?feed=rss2&#038;p=228</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
