
Ubuntu日本語フォーラム

ログインしていません。
最近、始めてシェルスクリプトの勉強を始めました。
スクリプトに渡す引数を出力したいと思い、
echo $1
echo $2
echo $3
とかくと、スクリプトに渡した引数が出力されます。
これを、for文で書くと
for i in 1 2 3
do
echo $i
done
とねるのですが、これでは1,2,3が出力されてしまいます。
どうなおしたらいいのでしょうか?
オフライン
答えでは有りませんが。
シェルスクリプトで色々とする時には、set -xや、set -nを活用すると良いですよ
また、変数がどう置き換わるかは、順に考えれば、「ああ、書いたとおり動いているなぁ」というのは判るかと思います。
# iというシェル変数に「1」が入った状態で、「$i」は「1」の意味(「echo i」なら、そのまま「i」が表示されます)。・・・とすると、以前に引数の内容の表示の際に指定したのは「$1」なので、そもそも「$」1つ足りていません。これを解決した上で、さらに、うまく出ない(エラーになるなり、違う値が出るなり)というのを調べて・・・と成るかと思います。
※コンピュータ用の言語で何かをさせる力は、うまく動かない時に調べて動かせる能力と思っています。学習が目的であるなら、ここで「どう直したらよいのか」を聞いてしまうと、おそらく、異なる問題のたびに聞いて回ることになります。(自分なりの)調べ方のほうを修得するつもりで取り組むと良いかと思います。学習ではなく、「○○を作るのが目的」なら、直し方/作り方を聞いてしまったほうが早いです。あとは、既存のスクリプトを多量に読むことです。既存のコマンドも、実は、シェルスクリプトだったりすることが多いですし(PerlやPythonで書かれたものも少なからずあるので侮れないですが・・・)
オフライン
weykさんの言われている様に、回答を聞いてしまうと後々苦労しますよ。
自分で検索して参考事例を読み解くとか、参考書で調べて勉強するのが習得の近道です。
取り敢えず、一例ですが入門書を紹介しておきます。
https://forums.ubuntulinux.jp/viewtopic … 657#p36657
オフライン
pirupiru による投稿:
最近、始めてシェルスクリプトの勉強を始めました。
スクリプトに渡す引数を出力したいと思い、
echo $1
echo $2
echo $3
とかくと、スクリプトに渡した引数が出力されます。
これを、for文で書くと
for i in 1 2 3
do
echo $i
done
とねるのですが、これでは1,2,3が出力されてしまいます。
どうなおしたらいいのでしょうか?
普通は
for i in $* do echo $i done
だろうと思います。
オフライン