Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
67
Help us understand the problem. What is going on with this article?
@koara-local

標準入力を受け取れるシェルスクリプト、関数の作成(パイプで繋げられるようにする)

More than 5 years have passed since last update.

シェルスクリプトでパイプで繋げられると便利なので、標準入力を受け取れるようにする方法メモ

実装例. 引数または標準入力で受け取った数値を合計するスクリプト

sum.sh
#!/bin/bash

# 標準入力を受け取る関数実装例 `cat -` を使う 
_sum() {
    local sum=0

    for i in $(cat -)
    do
        sum=$((sum + i))
    done

    echo $sum
}

# 標準入力を受け取るスクリプト実装例
# NOTE:
# if ~ fi にパイプをつなげると有効な方の標準出力を受け取れる
if [ -p /dev/stdin ]; then
    cat -
else
    echo $@
fi | _sum

実行例

# 引数で受け取る
$ ./sum.sh
0

$ ./sum.sh 1 2 3
6

$ ./sum.sh {0..100}
5050

# 標準入力で受け取る
$ echo -n | ./sum.sh
0

$ echo 1 2 3 | ./sum.sh
6

$ echo {0..100} | ./sum.sh
5050

その他、read を使う例と /dev/stdin を使う例は以下を参照
USP友の会:シェルスクリプトでの標準入力の読み方

参考

Bash シェルスクリプトで標準入力を受け取る - アウトプットができる技術者に
USP友の会:シェルスクリプトでの標準入力の読み方

67
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
koara-local
言語は最近は C#, Javaあたりがメイン。端末VimからIDEに移行。IntelliJすごい。Qiitaでの記事やその中の主張は、所属している企業/団体の意見を代表するものではありません。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
67
Help us understand the problem. What is going on with this article?