<?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>read &#8211; スグブログ</title>
	<atom:link href="https://sugublog.org/tag/read/feed/" rel="self" type="application/rss+xml" />
	<link>https://sugublog.org</link>
	<description>ブログ運営について発信中</description>
	<lastBuildDate>Tue, 21 Nov 2023 15:51:54 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://sugublog.org/wp-content/uploads/2021/07/icon_20210703-min-150x150.png</url>
	<title>read &#8211; スグブログ</title>
	<link>https://sugublog.org</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【シェルスクリプト】readでユーザーが指定したものを使用する方法</title>
		<link>https://sugublog.org/shell-script-read-while/</link>
					<comments>https://sugublog.org/shell-script-read-while/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[suguru]]></dc:creator>
		<pubDate>Tue, 21 Nov 2023 15:51:53 +0000</pubDate>
				<category><![CDATA[シェルスクリプト]]></category>
		<category><![CDATA[read]]></category>
		<category><![CDATA[while read]]></category>
		<guid isPermaLink="false">https://sugublog.org/?p=5965</guid>

					<description><![CDATA[<p><img src="https://sugublog.org/wp-content/uploads/2021/11/DB_1114-5-1024x682.jpg" class="webfeedsFeaturedVisual" /></p>シェルスクリプトのread]]></description>
										<content:encoded><![CDATA[<p><img src="https://sugublog.org/wp-content/uploads/2021/11/DB_1114-5-1024x682.jpg" class="webfeedsFeaturedVisual" /></p>
<p>シェルスクリプトでユーザーが入力したものを使用したいと思った事はありませんか？</p>



<p>ユーザーの入力したものを使用する事で、非常にインタラクティブなスクリプトが完成します。</p>



<p><span class="swl-marker mark_orange"><strong>シェルスクリプト</strong>では<strong><span class="swl-inline-color has-swl-deep-01-color">read</span></strong>を使用すれば可能です。</span></p>



<p>入力したものによって場合分けなども出来ます。そういった事を今回行います。</p>


<div class="p-blogParts post_content" data-partsID="5030">
<p>windowsのプロンプトで使用できるbatやpythonやphpを使用して、業務効率化やWebサイトを作成しております。javaやシェルスクリプトなど、様々なプログラミングを行った実績ありの筆者です。</p>
</div>


<p><span class="swl-marker mark_blue">最後に<strong><span class="swl-inline-color has-swl-deep-02-color">業務でも使用できるシェルスクリプト</span></strong>も紹介するので、最後までご覧ください。</span></p>



<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle ads" style="display:block; text-align:center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-9330904718533231" data-ad-slot="6086594686"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<h2 class="wp-block-heading">シェルスクリプトのreadでユーザーが入力したものを使用する方法</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="683" src="https://sugublog.org/wp-content/uploads/2021/11/listen_11-3-1024x683.jpg" alt="ユーザーが入力" class="wp-image-4471" srcset="https://sugublog.org/wp-content/uploads/2021/11/listen_11-3-1024x683.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/11/listen_11-3-300x200.jpg 300w, https://sugublog.org/wp-content/uploads/2021/11/listen_11-3-768x512.jpg 768w, https://sugublog.org/wp-content/uploads/2021/11/listen_11-3.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<h3 class="wp-block-heading">readコマンドの基礎</h3>



<p>シェルスクリプトの<strong><span class="swl-inline-color has-swl-deep-01-color">readコマンドの基礎</span></strong>を以下に示します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>read 変数</code></pre></div>



<p><strong>readの後に変数名</strong>を指定します。この行に来るとユーザーの入力待ちになります。</p>



<p>入力された文字列などが変数に格納されて、続きのスクリプトが実行されます。</p>



<h3 class="wp-block-heading">readを使用したスクリプト説明</h3>



<p>では実際のシェルスクリプトでreadを使用してみましょう！</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>echo 文字列を入力してください
read string
echo あなたが入力した文字は$stringです。</code></pre></div>



<p>echoで入力を促します。そして2行目で「read string」にしてユーザーが入力したものを変数stringに入れるようにしまう。</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/08/school_08-3-300x188.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/shell-script-echo/">【シェルスクリプト基礎】echoコマンドの使い方！</a>
						<span class="p-blogCard__excerpt">シェルスクリプトのechoコマンドの使い方で疑問に思っている事などないでしょうか？ 思い通りに文字列を表示できなかったりしないでしょうか？ シェルスクリプトでecho&#8230;</span>					</div>
				</div>
			</div>
		</div>


<p>3行目で変数stringに$をつけて変数展開しています。</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/12/PC教室20211216-3-300x232.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/shell-script-dollar-mean/">【シェルスクリプト】「$」の意味を詳しく解説！実例あり</a>
						<span class="p-blogCard__excerpt">シェルスクリプトで「$」はよく出てきますが、どういう意味なのかわからないと言った事はないでしょうか？ シェルスクリプトで「$」はよく出てきますが、どういう意味な&#8230;</span>					</div>
				</div>
			</div>
		</div>


<p>表示させる文字列と変数を結合する方法は、そのままくっつけて記述すればOKです。</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/09/randam_0915-4-300x169.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/shell-screipt-base-combine-strings/">【シェルスクリプト基礎】文字列を結合するには？改行、スペースなども結合</a>
						<span class="p-blogCard__excerpt">シェルスクリプトで文字列を結合したい場合などのやり方をまとめます。 変数と文字列の結合や改行、スペース、空白などを含めた結合、また引数と文字列なども結合してい&#8230;</span>					</div>
				</div>
			</div>
		</div>


<h3 class="wp-block-heading">read基礎を実践</h3>



<p>では<span class="swl-marker mark_orange">この<strong>read</strong>を使用した<strong>シェルスクリプト</strong>を<strong>実行</strong>してみます。</span></p>



<p>シェルスクリプトを実行するやり方は様々ありますが、「. シェルスクリプト名」で実行します。</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/08/script_0809-2-300x169.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/shell-script-execution/">【シェルスクリプト基礎】コマンドを実行する様々な方法をご紹介！</a>
						<span class="p-blogCard__excerpt">シェルスクリプトを実行する時に困った事はありませんか？ シェルスクリプトのコマンド実行での失敗メッセージ一覧 「実行権限がありません」 「コマンドが見つかりませ&#8230;</span>					</div>
				</div>
			</div>
		</div>


<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>文字列を入力してください</code></pre></div>



<p>1行目の文字列が表示されています。2行目でユーザーの入力待ちになっています。今回は「test」と入力してエンターします。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>あなたが入力した文字はtestです。</code></pre></div>



<p>きちんと<span class="swl-marker mark_orange">入力した値が入った文字列</span>が表示されています。</p>



<h2 class="wp-block-heading">readとifを使用して場合分けをしてみる</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/07/pixta_77773496_M-1024x791.jpg" alt="選択する" class="wp-image-3635"/><figcaption class="wp-element-caption">readとifで選択する</figcaption></figure>
</div>


<p>では<span class="swl-marker mark_orange"><strong><span class="swl-inline-color has-swl-deep-01-color">read</span></strong>と<strong><span class="swl-inline-color has-swl-deep-01-color">if</span></strong>を使用して、ユーザーが入力したもので処理を分けてみます。</span></p>



<p>シェルスクリプトでifを使用して複数条件を指定する基礎は以下です。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>if 条件１
 条件１にマッチした処理
elif 条件２
 条件２にマッチした処理
else その他
 どれにも当てはまらなかった処理
fi</code></pre></div>



<p>です。「elif」を増やしていく事で更なる条件分岐が出来ます。</p>



<p>ではreadとifを組み合わせて、以下のシェルスクリプトを作成してみます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>echo 1,2,3のうちどれかを入力してください
read input
 if [[ $input == 1 ]]; then
  echo 1を選んだ処理を書く
 elif [[ $input == 2 ]]; then
  echo 2を選んだ処理を書く
 elif [[ $input == 3 ]]; then
  echo 3を選んだ処理を書く
 else
  echo その他の処理を書く
fi</code></pre></div>



<h3 class="wp-block-heading">readとifのシェルスクリプト説明</h3>



<p>1行目のechoで説明文を表示して入力を促しています。2行目のreadでユーザーの入力したものを変数「input」に入れます。</p>



<p>3行目からifとreadで入力した数字で処理を分けています。1なら初めの処理、２なら次の処理、３なら3番目の処理、それ以外を選べばその他の処理が実行されます。</p>



<h3 class="wp-block-heading">readとifのシェルスクリプト実行</h3>



<p>ではこのread,ifのシェルスクリプトを実行します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>1,2,3のうちどれかを入力してください</code></pre></div>



<p>ここで入力待ちになります。1を入力してみます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>1を選んだ処理を書く</code></pre></div>



<p>１の処理が実行されてシェルスクリプトが終わりました。</p>



<p>では次は「test」と文字列を入力してみます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>その他の処理を書く</code></pre></div>



<p>どの条件にも当てはまらずelseの処理が表示されました。</p>



<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9330904718533231"
     crossorigin="anonymous"></script>
<ins class="adsbygoogle"
     style="display:block"
     data-ad-format="autorelaxed"
     data-ad-client="ca-pub-9330904718533231"
     data-ad-slot="8455594968"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<h2 class="wp-block-heading">実践：readとwhileを使用した実務でも使えるシェルスクリプト</h2>


<div class="wp-block-image is-style-border">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="512" src="https://sugublog.org/wp-content/uploads/2021/11/programing_shool1121-2-1024x512.jpg" alt="traning" class="wp-image-4542" srcset="https://sugublog.org/wp-content/uploads/2021/11/programing_shool1121-2-1024x512.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/11/programing_shool1121-2-300x150.jpg 300w, https://sugublog.org/wp-content/uploads/2021/11/programing_shool1121-2-768x384.jpg 768w, https://sugublog.org/wp-content/uploads/2021/11/programing_shool1121-2.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>では最初のシェルスクリプトを<span class="swl-marker mark_orange"><strong><span class="swl-inline-color has-swl-deep-01-color">while</span></strong>と<strong><span class="swl-inline-color has-swl-deep-01-color">関数</span></strong>を使用して、<strong>実践でも使用できる業務レベル</strong>まで引き上げます。</span></p>



<p>最初に実行したシェルスクリプトは入力した文字を表示するものでした。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>echo 文字列を入力してください
read string
echo あなたが入力した文字は$stringです。</code></pre></div>



<p class="is-style-big_icon_caution">しかし何も入力しないでも「あなたが入力した文字はです。」と表示されます。</p>



<p>これでは実務では使用できません。</p>



<h3 class="wp-block-heading">実践でも使用できる業務レベルのシェルスクリプト</h3>



<p>これをユーザーが入力するまで繰り返しヒアリングするシェルスクリプトに変更してみましょう！</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>#関数を使用します
function string_input(){
echo 文字列を入力してください
read string
}
#whileで変数の値が0の場合は関数に戻り続けます。変数が入力されたら抜けます。
while [[ -z $string ]]
do
 string_input
done
 echo あなたが入力した文字は$stringです。</code></pre></div>



<p>業務で使用するシェルスクリプトは、後から誰が見てもわかるようにコメントアウトして説明文をつけましょう！</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/08/school_08-2-300x200.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/syell-script_comment_out/">【シェルスクリプト基礎】コメントアウトのやり方！</a>
						<span class="p-blogCard__excerpt">シェルスクリプトでコメントを入れたいけど入れ方がわからない。 また複数行コメントアウトできればやりたいといった要望はあると思います。 そこで今回はシェルスクリ&#8230;</span>					</div>
				</div>
			</div>
		</div>


<h3 class="wp-block-heading">業務レベルのシェルスクリプト説明</h3>



<p>functionで関数を作成しています。｛｝で囲った処理を呼び出す事が出来ます。</p>



<p>function名を「string_input」として文字列を入力させる処理を記述しています。</p>



<p>whileで変数「string」の文字列が0の場合は関数「string_input」を呼び出すようにしています。</p>



<p>これでユーザー入力が空白であれば、入力処理に戻る事が可能です。</p>



<p>入力されればwhileの繰り返しを抜けて、文字列を表示してシェルスクリプトが終了します。</p>



<h3 class="wp-block-heading">業務レベルのシェルスクリプト実行</h3>



<p>ではこのシェルスクリプトを実行して、<span class="swl-marker mark_yellow">何も入力せずにエンターを何回か押してみます</span>。<span class="swl-marker mark_green">その後「test」と入力</span>してみます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>文字列を入力してください

文字列を入力してください

文字列を入力してください
test
あなたが入力した文字はtestです。</code></pre></div>



<p><span class="swl-marker mark_yellow">何度も入力を促されて</span>、<span class="swl-marker mark_green">文字を入力すると想定の文字列が表示</span>されました。</p>



<p class="has-border -border02">シェルスクリプトでreadを自分のモノにすれば、一層楽しくなるので極めてみてください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sugublog.org/shell-script-read-while/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
