0
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?

shellgei160を通じて言語習得Advent Calendar 2023

Day 12

Ruby芸160チャレンジ(#12)引数や標準入力の読み込み

Last updated at Posted at 2023-12-11

この記事は何

shellgei160を通じて言語習得 Advent Calendar 2023に参加しています。

書籍「シェル芸ワンライナー160本ノック」の例題をRubyで解いてみて、Rubyの学習に役立てようとするものです。

例題はこちらのリポジトリで公開されているものに限ります。
https://github.com/shellgei/shellgei160

実行環境など

  • Docker image: ruby:3.0.2
  • 上記リポジトリをクローンした上で、リポジトリのルートディレクトリ直下にanswer-rubyディレクトリを作り、その中に解答となるファイルを作成していきます。

今回のテーマ

#!/bin/bash
if [ "$1" = "" ] ; then
    read n
else
    n="$1"
fi
echo $((n*2))

引数($1)か、それが与えられない場合は標準入力を読み込み、2倍にして表示します。

n = ARGV[0] || gets.chomp
begin
  n = Integer(n)
rescue StandardError
  raise ArgumentError, '引数は数値にしてください'
end

puts n * 2

所感

  • 引数や標準入力の受け取り方、なるほど。||はシェル的用法(?)で、前のコマンドが失敗した時だけ実行するもの。失敗理由が限定的なときは、今回のコードのようにすっきり使えて良さそう。
  • 与えられた値を数値に変換する時、n.to_iも使えるがエラーをキャッチできなかったのでInteger(n)とした。
0
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
0
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?