質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

Q&A

2回答

689閲覧

同じ位置パラメターを複数のシェル変数に代入したい

t-taro

総合スコア38

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

0グッド

1クリップ

投稿2020/09/22 01:55

シェル関数内で同じ位置パラメターを複数のシェル変数に代入したいのですが、はじめの1回しか位置パラメーターを代入できないようです。
対処法がわからず困っています。

sh

1$ test_echo(){ 2 input1=$1 #引数1をinput1に代入 3 input2=$1 #引数1をinput2に代入 4 cat $input1 | xargs echo #input1を出力 5 cat $input2 | xargs echo #input2を出力 6} 7# 理想 8$ echo "hoge" | test_echo 9hoge 10hoge 11# 現実 12## GNU bash, version 5.0.17(1)-release (x86_64-pc-linux-gnu) 13$ echo "hoge" | test_echo 14hoge 15 16## zsh 5.7.1 (x86_64-apple-darwin19.0) 17$ echo "hoge" | test_echo 18hoge

ご教示いただければ幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

「位置パラメーター」の意味がわかっていませんね。

test_echo foo barと書いたときに、$1foo$2barになります。これが位置パラメターです。

echo hoge | test_echoと書いたときには、hogeは標準入力のデータです。

投稿2020/09/22 02:01

otn

総合スコア84498

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

otnさんの回答で正解ですが、
他にも勘違いされているところがあるようなので、
補足回答させていただきます。

test_echo(){
input1=$1 #引数1をinput1に代入
input2=$1 #引数1をinput2に代入
cat $input1 | xargs echo #input1を出力
cat $input2 | xargs echo #input2を出力
}

まずこれは関数の定義です。

そこが判っていて書いているなら問題ないですが、大丈夫でしょうか。

また、cat $input1というからには、input1がファイルをさしていることの確認が必要ですが、そのような認識はまったく感じられません。

更にこれを、| xargs echoに渡していますが、
xargsのデフォルトで引数コマンドを省略するとechoになりますので、無駄な記述です。

xargs は引数のコマンドが標準入力を受け付けず、引数をとる場合に
使用するのが基本です(ま、もっと奥深いですが)

・・・要するに、今回の場合 | xargs echoはあってもなくても同じです。

投稿2020/09/22 06:47

hana_yama_san

総合スコア923

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問