半数が正解の一方、自信満々で間違える。>RSSサーチマン佐藤のコラムIT技術を詳しく解説し、IT業界の本音を探る。半数が正解の一方、自信満々で間違える。2019/11/05サーチマン佐藤です。つのシェルがあります。「下(xx2.sh)だけ動く」です。「えー何で?」と思った方も多いでしょう。xx1.shとxx2.shの違いは、if文に半角スペースがあるかないか、それだけなのですが、(わからない人は、↑のソース、じっくり見てくださいね)実は、シェルは、その半角スペースがないと、エラーになるんですね。効率的にスイスイ、プログラムを作れるのか?その観点で掲載するわけで、ご了承くださいね。【読者から】=======================両方動く。何度見ても同じコードにしか見えません。thenの"0"]にスペースがあるかないかですが、この場合は、あってもなくても、同じ。=======================【読者から】=======================問いの意味が解りません。【xx1.sh】と【xx2.sh】の違いが判りません。答えるならば、両方動く。期待した動作にならない。"0"」は代入文なので、必ずTrueになる。=======================【読者から】=======================どちらも動かない。全角になっている=======================【読者から】=======================上(xx1.sh)だけ動く2は全角のスペースがある。間違った方のお便りを掲載しましたが、みんな、自信満々でしょ。自信満々だけど、間違っている(笑)。確かにね、ソースの半角スペース関係ない場合、多いですよ。この先入観こそ、ドハマりの原因です(苦笑)。ここは、一つのポイントですね。次に、今までの経験と勘で、(シェルに詳しくなくても)正解を当てた人のお便り。両者の差はif文の半角スペースあるなしの違いだったので、あったほうが文法的に合ってるかな?と推測しました。※シェルはほぼド素人なので完全に推測です。=======================【読者から】=======================シェルスクリプトは全く知りません。半角スペースがあるかないか」だけでした。書式エラーとなる位しかパターンが思いつきませんでした。基礎知識がないので、どちらかが動かないという前提での推測ですが。正解をもぎ取っている。一つ正しいものがあれば、そこから正解を導いている。いわゆる、「勘が働く」状況です。やったら、この状況になれるのか?ここも、ポイントです。お便り、掲載しますね。【読者から】=======================下(xx2.sh)だけ動くまさに今日、ほんの数時間前にshellのお勉強購入しました。3日前から、10数年ぶりにシェルを作ってます。本当にviすら使わなくなります。時々、サーチマンさんのところで勉強しないとと思ったところでこの問題!!身にしみてます。正しいxx2.shが意図通りに動作する。=======================【読者から】======================="0"のあとのスペースですかね。自分がハマって苦労したところで、わかりました。