シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。
前スレ: シェルスクリプト総合 その35
https://mevius.5ch.net/test/read.cgi/tech/1606221440/
関連スレ
・【Bash】Windows Subsystem for Linux【WSL】9
https://mao.5ch.net/test/read.cgi/linux/1607589861/
・Bashでプログラミング [転載禁止](c)2ch.net
https://mao.5ch.net/test/read.cgi/linux/1443885102/
・シェルスクリプト総合 その28
https://mevius.5ch.net/test/read.cgi/unix/1533154936/
・zsh その7
https://mevius.5ch.net/test/read.cgi/unix/1337844883/
・過去UNIXで使われていた ksh というシェルについて
https://mevius.5ch.net/test/read.cgi/unix/1582358403/
・【POSIX】UNIXプログラミング【BSD】 [転載禁止](c)2ch.net
https://mevius.5ch.net/test/read.cgi/unix/1443103705/
・おまえら! shell は何を使っているんですか?
https://mevius.5ch.net/test/read.cgi/unix/1012330865/
探検
シェルスクリプト総合 その36
レス数が1000を超えています。これ以上書き込みはできません。
2021/02/25(木) 09:20:14.64ID:ZyJLXTlk
910デフォルトの名無しさん
2021/10/03(日) 01:52:00.50ID:prztZm/y911デフォルトの名無しさん
2021/10/03(日) 21:33:19.87ID:lRGZaQA9 Makefileのコマンド部分のインデントにタブ以外つかえないの地味にツライです
912デフォルトの名無しさん
2021/10/03(日) 23:29:34.04ID:53YOJQpZ913デフォルトの名無しさん
2021/10/04(月) 00:19:02.66ID:zDusbFKv914デフォルトの名無しさん
2021/10/04(月) 00:38:06.79ID:68bdvZVH 郷に入っては郷に従え
915デフォルトの名無しさん
2021/10/04(月) 04:16:49.89ID:hDmlyFvp >return 0 が C言語とシェルスクリプトで意味が真逆
え?
え?
916デフォルトの名無しさん
2021/10/04(月) 11:18:50.12ID:k4THeifQ main()のreturnに関してはshと一緒だが
returnに限らずifや論理演算で使うときの0/0以外は意味が真逆って話ですかね
どうするもこうするも、脳内で切り替えるしかないのでは
returnに限らずifや論理演算で使うときの0/0以外は意味が真逆って話ですかね
どうするもこうするも、脳内で切り替えるしかないのでは
917デフォルトの名無しさん
2021/10/04(月) 11:27:18.04ID:up54+LrH 言語によって切り替えるのが普通の人だ
918デフォルトの名無しさん
2021/10/04(月) 11:56:33.52ID:jGq6SyTd 動的に変数名を作ってそのまま使用するのってどうやるのでしょうか
val_a="aaa"
val_b="bbb"
ary=( "a" "b" )
for s in ${ary[@]}; do
echo ${val_$s}
done
だとbad substitutionでした
val_a="aaa"
val_b="bbb"
ary=( "a" "b" )
for s in ${ary[@]}; do
echo ${val_$s}
done
だとbad substitutionでした
919デフォルトの名無しさん
2021/10/04(月) 14:30:02.14ID:hDmlyFvp >>916
成功(0)失敗(0以外、だいたい負数もしくは-1) と 真(0以外もしくは1)偽(0) があるが、真偽しか知らないとかかな
C には main 以外にも 成功失敗 を返す関数はいっぱいある。もちろん成功失敗/真偽以外のを返すのもは言わずもがなだが。Cという言語でさえ何の関数でで切り替えなきゃ C 使えないだろうにな
シェルスクリプトは成功失敗でしかないからなwhileやifなどの基本的な制御文は
成功(0)失敗(0以外、だいたい負数もしくは-1) と 真(0以外もしくは1)偽(0) があるが、真偽しか知らないとかかな
C には main 以外にも 成功失敗 を返す関数はいっぱいある。もちろん成功失敗/真偽以外のを返すのもは言わずもがなだが。Cという言語でさえ何の関数でで切り替えなきゃ C 使えないだろうにな
シェルスクリプトは成功失敗でしかないからなwhileやifなどの基本的な制御文は
920デフォルトの名無しさん
2021/10/04(月) 14:57:35.57ID:fSDY+8CH eval echo "¥${val_${s}}"
921デフォルトの名無しさん
2021/10/04(月) 15:01:04.22ID:TUhdMDNq val="val_$s"
echo "${!val}"
echo "${!val}"
922デフォルトの名無しさん
2021/10/04(月) 15:29:45.66ID:zDusbFKv >>919
> シェルスクリプトは成功失敗でしかないからなwhileやifなどの基本的な制御文は
いや、それはCも同じや。w
条件部に任意の式を書けるだけ。
そいつは、物事をムリヤリにでも単純化したいだけやと思う。
まあ、気持ちはわからんでもない。
ワイにもそういうときはあった。
初心者かつ理想主義者ならではなんかね。
> シェルスクリプトは成功失敗でしかないからなwhileやifなどの基本的な制御文は
いや、それはCも同じや。w
条件部に任意の式を書けるだけ。
そいつは、物事をムリヤリにでも単純化したいだけやと思う。
まあ、気持ちはわからんでもない。
ワイにもそういうときはあった。
初心者かつ理想主義者ならではなんかね。
923デフォルトの名無しさん
2021/10/04(月) 16:21:38.67ID:hDmlyFvp >>922
C は 成功失敗 とかではなく、評価式の結果の値が 0かそれ以外か だけど
原典のK&Rに書いてある通り
真偽 Booleanと言えるが そもそもはBooleanが無いから 0かそれ以外か だな
シェルスクリプトはモロに成功失敗でしかないから、true「コマンド」のexit statusが 0=成功 でそれで成り立ってるんだけど
C は 成功失敗 とかではなく、評価式の結果の値が 0かそれ以外か だけど
原典のK&Rに書いてある通り
真偽 Booleanと言えるが そもそもはBooleanが無いから 0かそれ以外か だな
シェルスクリプトはモロに成功失敗でしかないから、true「コマンド」のexit statusが 0=成功 でそれで成り立ってるんだけど
924デフォルトの名無しさん
2021/10/04(月) 16:30:51.81ID:zDusbFKv925デフォルトの名無しさん
2021/10/04(月) 16:42:05.78ID:hDmlyFvp >>924
Cも知らないのに何言ってるんだかなとしか思えん
シェルスクリプトが扱うコマンドはCで書かれてもいての EXIT_SUCCESS ってあるんだけど。もちろんシェルスクリプトはその値をもベースにしてる
判定は真逆だろうに、Cと同じって何を言っているのだか
C
if( 評価式 )
判定式の結果値が 「0でなかったら」
シェルスクリプト
if コマンド; then
コマンドの EXIT STATUS が 「0だったら」
testコマンドも同じ、評価した結果が 成功か失敗 でしかない。EXIT STATUSはそういうもんだから...なんてCでなんか書いたことあるなら当然知っているだろう
Cも知らないのに何言ってるんだかなとしか思えん
シェルスクリプトが扱うコマンドはCで書かれてもいての EXIT_SUCCESS ってあるんだけど。もちろんシェルスクリプトはその値をもベースにしてる
判定は真逆だろうに、Cと同じって何を言っているのだか
C
if( 評価式 )
判定式の結果値が 「0でなかったら」
シェルスクリプト
if コマンド; then
コマンドの EXIT STATUS が 「0だったら」
testコマンドも同じ、評価した結果が 成功か失敗 でしかない。EXIT STATUSはそういうもんだから...なんてCでなんか書いたことあるなら当然知っているだろう
926デフォルトの名無しさん
2021/10/04(月) 16:47:03.61ID:jGq6SyTd927デフォルトの名無しさん
2021/10/04(月) 17:25:08.90ID:seuesddr [ ] がコマンドだって知らない人がいるのかな?
シェルスクリプトの真偽はCと同じですよ
コマンドの終了ステータスはCもシェルスクリプトも0が正常、0以外が異常
echo $((2 > 1))
1
↑の通りシェルスクリプトの真は1
シェルスクリプトの真偽はCと同じですよ
コマンドの終了ステータスはCもシェルスクリプトも0が正常、0以外が異常
echo $((2 > 1))
1
↑の通りシェルスクリプトの真は1
928デフォルトの名無しさん
2021/10/04(月) 17:32:53.14ID:68bdvZVH read()って0が正常なんだっけ?
929デフォルトの名無しさん
2021/10/04(月) 17:43:03.44ID:hDmlyFvp >>927
真(0以外もしくは1)偽(0) だけだと思うから、変なこと言い出しただけだろう
成功(0)失敗(0以外、だいたい負数もしくは-1) もあり、シェルスクリプトは 成功失敗 でしかないって話だよ
「真偽はCと同じ」とか言い出すから...w 2分岐でしかないとこのを真偽と言いたいのかな?
シェルスクリプトの制御文はEXIT STATUSしか見ないから、そんな例は無意味だろう
普通 if 文は 真/正 だったら〜でif分内に入るが、その例を持ち出してどう説明するの?
真(0以外もしくは1)偽(0) だけだと思うから、変なこと言い出しただけだろう
成功(0)失敗(0以外、だいたい負数もしくは-1) もあり、シェルスクリプトは 成功失敗 でしかないって話だよ
「真偽はCと同じ」とか言い出すから...w 2分岐でしかないとこのを真偽と言いたいのかな?
シェルスクリプトの制御文はEXIT STATUSしか見ないから、そんな例は無意味だろう
普通 if 文は 真/正 だったら〜でif分内に入るが、その例を持ち出してどう説明するの?
930デフォルトの名無しさん
2021/10/04(月) 17:57:13.20ID:zDusbFKv >>925
EXIT_SUCCESSとかはただの超後付けやぞ?w
もともとそんなもんはなかった。
条件判定は、判定が逆なだけで、やってることが同じ。
成功か失敗かではなく、値しか参照してない。
読解力がないヤツはめんどいな。。。
ま、いいけど。では、これにて。
EXIT_SUCCESSとかはただの超後付けやぞ?w
もともとそんなもんはなかった。
条件判定は、判定が逆なだけで、やってることが同じ。
成功か失敗かではなく、値しか参照してない。
読解力がないヤツはめんどいな。。。
ま、いいけど。では、これにて。
931デフォルトの名無しさん
2021/10/04(月) 18:03:18.56ID:hDmlyFvp932デフォルトの名無しさん
2021/10/04(月) 18:08:15.93ID:hDmlyFvp 成功(0)失敗(0以外、だいたい負数もしくは-1)
というのは太古から存在してるというのを、元々のやつはおろかそいつに反発(?)してるやつもどうやら知らないらしい...
何で知らないのか理解できない、Cに限らず他の言語でもあるのに
というのは太古から存在してるというのを、元々のやつはおろかそいつに反発(?)してるやつもどうやら知らないらしい...
何で知らないのか理解できない、Cに限らず他の言語でもあるのに
933デフォルトの名無しさん
2021/10/04(月) 18:16:05.28ID:hDmlyFvp >>931
誤 >>927の最初に
正 >>919の最初に
失礼
と、わかりやすそうなの探してきたぞ,
https://en.wikipedia.org/wiki/Exit_status
をよく読んでみ
誤 >>927の最初に
正 >>919の最初に
失礼
と、わかりやすそうなの探してきたぞ,
https://en.wikipedia.org/wiki/Exit_status
をよく読んでみ
934デフォルトの名無しさん
2021/10/04(月) 19:13:01.03ID:seuesddr >>929
何がいいたいのかさっぱり
if [ $bool = 1 ]; then
で真だったらって書けるやろ
分かりづらいって言うなら
TRUE=1
if [ $bool = $TRUE ]; then
でもいいし
何がいいたいのかさっぱり
if [ $bool = 1 ]; then
で真だったらって書けるやろ
分かりづらいって言うなら
TRUE=1
if [ $bool = $TRUE ]; then
でもいいし
935デフォルトの名無しさん
2021/10/04(月) 19:20:57.93ID:hDmlyFvp >>934
>[ ] がコマンドだって知らない人がいるのかな?
と言い出したのに...本当に自分ではわかってるのか疑わしいぞ
if文=シェルスクリプトが判断してるのは その評価式=ではなく評価式を評価したtestコマンドの EXIT STATUS = 成功失敗 でしかないって
本当にわからない人だなあ
Booleanなのに true とか 1 と比較するのはどうなの、というのは個人の好みだが、こうも書ける。関係ないけど
bool=true or fasle
if $bool; then
...
よりシェルスクリプト基本に添ってると思うけどなw そのある意味オレオレよりは
>[ ] がコマンドだって知らない人がいるのかな?
と言い出したのに...本当に自分ではわかってるのか疑わしいぞ
if文=シェルスクリプトが判断してるのは その評価式=ではなく評価式を評価したtestコマンドの EXIT STATUS = 成功失敗 でしかないって
本当にわからない人だなあ
Booleanなのに true とか 1 と比較するのはどうなの、というのは個人の好みだが、こうも書ける。関係ないけど
bool=true or fasle
if $bool; then
...
よりシェルスクリプト基本に添ってると思うけどなw そのある意味オレオレよりは
936デフォルトの名無しさん
2021/10/04(月) 19:34:13.89ID:hDmlyFvp >シェルスクリプトが判断してるのは
シェル(シェルスクリプトインタープリター)が判断してるのかか
なんかあったw K&R 初版にすでに
The program also uses the standard library function exit, which ter-minates program execution when it is called. The argument of exit is available to whatever process called this one, so the success or failure of the program can be tested by another program that uses this one as a sub, process.
By convention, a return value of 0 signals that all is well, and vari-ous non-zero values signal abnormal situations.
って書いてある
Cが何のために作られたか、シェルスクリプトも何のために作られたか、それぐらいわかってはいるだろうから、この短文だけで「読める」だろう(自分勝手な理解を置いておけば)と思いたい
シェル(シェルスクリプトインタープリター)が判断してるのかか
なんかあったw K&R 初版にすでに
The program also uses the standard library function exit, which ter-minates program execution when it is called. The argument of exit is available to whatever process called this one, so the success or failure of the program can be tested by another program that uses this one as a sub, process.
By convention, a return value of 0 signals that all is well, and vari-ous non-zero values signal abnormal situations.
って書いてある
Cが何のために作られたか、シェルスクリプトも何のために作られたか、それぐらいわかってはいるだろうから、この短文だけで「読める」だろう(自分勝手な理解を置いておけば)と思いたい
937デフォルトの名無しさん
2021/10/04(月) 19:49:22.53ID:seuesddr938デフォルトの名無しさん
2021/10/04(月) 19:50:42.83ID:seuesddr > Booleanなのに true とか 1 と比較するのはどうなの、というのは個人の好みだが、
シェルスクリプトが真で1を返してるんだからしょうがない
echo $((2 > 1))
1
FALSE=0で0以外だったら?と書いてもいいけどな
シェルスクリプトが真で1を返してるんだからしょうがない
echo $((2 > 1))
1
FALSE=0で0以外だったら?と書いてもいいけどな
939デフォルトの名無しさん
2021/10/04(月) 20:02:21.71ID:hDmlyFvp >>937,938
話にならんな
だからコマンドの(評価式の)判断はシェルスクリプトのifなどの制御文と関係ないって言ってるだろうに
>シェルスクリプトが真で1を返してる
今だに、全然わかってないのが明らかだな
>[ ] がコマンドだって知らない人がいるのかな?
って、自分で言ってるのに、本当はわかってないんだな
わかってないのにこう言った意味意図がわからん
話にならんな
だからコマンドの(評価式の)判断はシェルスクリプトのifなどの制御文と関係ないって言ってるだろうに
>シェルスクリプトが真で1を返してる
今だに、全然わかってないのが明らかだな
>[ ] がコマンドだって知らない人がいるのかな?
って、自分で言ってるのに、本当はわかってないんだな
わかってないのにこう言った意味意図がわからん
940デフォルトの名無しさん
2021/10/04(月) 20:16:18.32ID:seuesddr わかってないわかってない言うだけで
何も指摘してないなこいつw
何も指摘してないなこいつw
941デフォルトの名無しさん
2021/10/04(月) 20:18:16.08ID:hDmlyFvp 指摘してるのが読めないのな
いや読まない認めないだけか
いや読まない認めないだけか
942デフォルトの名無しさん
2021/10/04(月) 20:20:05.24ID:hDmlyFvp いや、手取り足取り教えてくださいかな
この意固地っぷりわからなさぶりは
元々のヤツよりよほどわかってなさげだなあ、何でそいつらの方がめんどくさいんだか
この意固地っぷりわからなさぶりは
元々のヤツよりよほどわかってなさげだなあ、何でそいつらの方がめんどくさいんだか
943デフォルトの名無しさん
2021/10/04(月) 20:25:10.55ID:seuesddr だからシェルスクリプトの真は1
if や真偽値ではなくて、終了ステータスを見る
[]はコマンド、その戻り値は終了ステータス
って言ってるだけですが?
if や真偽値ではなくて、終了ステータスを見る
[]はコマンド、その戻り値は終了ステータス
って言ってるだけですが?
944デフォルトの名無しさん
2021/10/04(月) 20:25:32.75ID:seuesddr ifは真偽値ではなくて、終了ステータスを見る
945デフォルトの名無しさん
2021/10/04(月) 20:31:27.73ID:hDmlyFvp まだ「言い張ってる」
やれやれ
単に「人に対してわかりやすい」単なる「算術結果」の「プリント」でしかないのに
結果が A/B でも構わない=制御文と「何も関係ないから」。そうでないのは単なる人に対しての場合の慣例だからだろうとわかりそうなものだが
そんなにBooleanが好きならやっぱりせっかくそのもである true/false 使えよと思わなくもない、制御文にもそのまま使えるのだし
やれやれ
単に「人に対してわかりやすい」単なる「算術結果」の「プリント」でしかないのに
結果が A/B でも構わない=制御文と「何も関係ないから」。そうでないのは単なる人に対しての場合の慣例だからだろうとわかりそうなものだが
そんなにBooleanが好きならやっぱりせっかくそのもである true/false 使えよと思わなくもない、制御文にもそのまま使えるのだし
946デフォルトの名無しさん
2021/10/04(月) 20:33:07.26ID:seuesddr 真偽値は1(0以外)と0だっているのに、trueとfalseだって勘違いしてんのかw
947デフォルトの名無しさん
2021/10/04(月) 20:38:29.57ID:hDmlyFvp はあ...
>真偽値は1(0以外)と0だっているのに
慣例およびCとかBooleanが明確にないとこはな、そんなの常識だろうに
真偽 Boolean値はある意味正式には true/false だぞ(YES/NOとかのとこもあるけどな)、それすらも知らないとか...
>真偽値は1(0以外)と0だっているのに
慣例およびCとかBooleanが明確にないとこはな、そんなの常識だろうに
真偽 Boolean値はある意味正式には true/false だぞ(YES/NOとかのとこもあるけどな)、それすらも知らないとか...
948デフォルトの名無しさん
2021/10/04(月) 20:40:08.73ID:hDmlyFvp 無知も大概にしろ、それもそんなくせに何か自分は知ってる風とか
ただただめんどくさいだけじゃん
てことで
ただただめんどくさいだけじゃん
てことで
949デフォルトの名無しさん
2021/10/04(月) 20:52:06.46ID:seuesddr > 真偽 Boolean値はある意味正式には true/false だぞ(YES/NOとかのとこもあるけどな)、それすらも知らないとか...
書いてある所持ってきてw
いっつも、何の根拠もなく
主張だけしてるよなお前
だから証拠付きつけられて負けてるんやで
書いてある所持ってきてw
いっつも、何の根拠もなく
主張だけしてるよなお前
だから証拠付きつけられて負けてるんやで
950デフォルトの名無しさん
2021/10/04(月) 20:54:23.61ID:hDmlyFvp モロ「手取り足取り教えてください」を自白w
少し調べればあるぞ、コンピュータサイエンスの常識だからな
本当に無知のくせにただただめんどくさいヤツだったとは
まあ、あとは自力で頑張れ。その使ってるナニかは自分で調べるためにもあるんだからな
少し調べればあるぞ、コンピュータサイエンスの常識だからな
本当に無知のくせにただただめんどくさいヤツだったとは
まあ、あとは自力で頑張れ。その使ってるナニかは自分で調べるためにもあるんだからな
951デフォルトの名無しさん
2021/10/04(月) 21:34:45.41ID:MQzfkP4R 終了ステータスは
(エラーが) [ 0:false:有りませんでした | 0以外:true:有りました ]
だと思ってたんだが
(エラーが) [ 0:false:有りませんでした | 0以外:true:有りました ]
だと思ってたんだが
952デフォルトの名無しさん
2021/10/04(月) 23:57:42.15ID:zDusbFKv953デフォルトの名無しさん
2021/10/05(火) 05:07:50.98ID:h//Q5yAA 終了ステータスは、真偽値じゃなくて数値だからね
127 はコマンドが見つからないとか、いろんな意味がある
127 はコマンドが見つからないとか、いろんな意味がある
954デフォルトの名無しさん
2021/10/05(火) 11:37:08.32ID:BsTkn0yK955デフォルトの名無しさん
2021/10/05(火) 15:18:38.51ID:Vzh0q/ov cみたいな新参言語と比べるなよ?
956デフォルトの名無しさん
2021/10/05(火) 15:22:23.47ID:Vzh0q/ov と思ったらcのが早いのか…
当時ナウかったalgolの影響大きすぎて錯覚する(fiとかesacとか)
当時ナウかったalgolの影響大きすぎて錯覚する(fiとかesacとか)
957デフォルトの名無しさん
2021/10/05(火) 15:28:38.07ID:k2GS0F1f algolは死んだしcを新参と笑えるバリバリ現役言語はlisp、fortran、cobolくらいでは
958デフォルトの名無しさん
2021/10/05(火) 17:09:15.80ID:dp5on/du このスレきもちわる
959デフォルトの名無しさん
2021/10/05(火) 18:12:02.21ID:33c4JJMi 病気なんじゃね?w
960デフォルトの名無しさん
2021/10/05(火) 18:52:58.49ID:JbR3YU6O 科学臭
961デフォルトの名無しさん
2021/10/05(火) 19:11:37.04ID:33c4JJMi 宗教よりはマシやろw
962デフォルトの名無しさん
2021/10/05(火) 19:50:39.12ID:RLO9CO91963デフォルトの名無しさん
2021/10/05(火) 21:10:53.59ID:33c4JJMi regexpは表現やろ?
964デフォルトの名無しさん
2021/10/05(火) 22:05:00.71ID:I9nBHPaT 忘れられがちなPL/I
965デフォルトの名無しさん
2021/10/06(水) 10:50:03.14ID:1RiK8cCJ966デフォルトの名無しさん
2021/10/06(水) 13:05:49.45ID:RFU2koBA >>963
「expression」の和訳の問題だから。
「expression」の和訳の問題だから。
967デフォルトの名無しさん
2021/10/09(土) 22:37:14.17ID:IfT7mukr 俺もUNIXプログラミング環境持ってるけど、真と偽をtrueとそれ以外(false)って感じで書いてある。シェルスクリプトで真偽と言うとこれだよな。一般的な真偽値とはまた別で。
それにifは真かそれ以外かしか見れないんだから真偽値で言う偽なんざいらねーし。
それにifは真かそれ以外かしか見れないんだから真偽値で言う偽なんざいらねーし。
968デフォルトの名無しさん
2021/10/10(日) 00:30:49.33ID:xmO2FPMa またよくわかってないやつが
969デフォルトの名無しさん
2021/10/10(日) 00:35:16.90ID:6jcVzzbi970デフォルトの名無しさん
2021/10/10(日) 12:09:43.32ID:ZbbT3pWR >>969
Unixプログラミング環境、今となっては結構レアな本だと思ってたけどみんな持ってるのか。
特に邦訳版から読んでそれ以降使い込まなかった人はシェルスクリプトの真偽はゼロかそれ以外って覚えてても不思議はないと思うな。
Unixプログラミング環境、今となっては結構レアな本だと思ってたけどみんな持ってるのか。
特に邦訳版から読んでそれ以降使い込まなかった人はシェルスクリプトの真偽はゼロかそれ以外って覚えてても不思議はないと思うな。
971デフォルトの名無しさん
2021/10/10(日) 17:16:50.58ID:Liv3MhTX 不思議もなにも、それしかないからな。
勝手に意味付けしようと思い込むヤツが勝手にややこしくできあがってるだけで。
勝手に意味付けしようと思い込むヤツが勝手にややこしくできあがってるだけで。
972デフォルトの名無しさん
2021/10/11(月) 07:02:29.47ID:0Us0xwCf 真偽じゃなくて成否なんだよ
Exit statusは
否は複数あっていい
&&や||はexit statusに関連する成否を扱う演算なんだ
どこにどう書いてあろうが、本質はそれ以外にない
「関連する」と書いたのは
$ not-exist-command || echo hello world
not-exist-command: command not found
hello world
$ not-exist-command && echo hello world
not-exist-command: command not found
$
これはexit statusじゃないから
Exit statusは
否は複数あっていい
&&や||はexit statusに関連する成否を扱う演算なんだ
どこにどう書いてあろうが、本質はそれ以外にない
「関連する」と書いたのは
$ not-exist-command || echo hello world
not-exist-command: command not found
hello world
$ not-exist-command && echo hello world
not-exist-command: command not found
$
これはexit statusじゃないから
973デフォルトの名無しさん
2021/10/11(月) 09:50:35.87ID:j+pkxrpN >>972
うーん、失敗したら真を返すプログラムも書きたいから、スクリプト側では成否と言う概念や言葉を使うより真偽の方がやりやすいんじゃないの?
うーん、失敗したら真を返すプログラムも書きたいから、スクリプト側では成否と言う概念や言葉を使うより真偽の方がやりやすいんじゃないの?
974デフォルトの名無しさん
2021/10/11(月) 17:46:38.27ID:FYumYboV >>972
いや、それもexit status。
man bash(COMMAND EXECUTION)にもはっきりそう書いてある。
プログラムとパイプライン各段、終了ステータスを出すほうと受けるほうで混乱すんなよ。
いや、それもexit status。
man bash(COMMAND EXECUTION)にもはっきりそう書いてある。
プログラムとパイプライン各段、終了ステータスを出すほうと受けるほうで混乱すんなよ。
975デフォルトの名無しさん
2021/10/11(月) 17:47:38.44ID:FYumYboV976デフォルトの名無しさん
2021/10/11(月) 20:08:45.72ID:AmMau6EN >>973
失敗したら真を返すってC言語の場合だとどうかきたいの?
https://ja.wikipedia.org/wiki/%E3%83%96%E3%83%BC%E3%83%AA%E3%82%A2%E3%83%B3%E5%9E%8B#C99
> C99ではブーリアン型を格納したりするための型が作られ、その型のためのキーワード _Bool が追加された。
失敗したら真を返すってC言語の場合だとどうかきたいの?
https://ja.wikipedia.org/wiki/%E3%83%96%E3%83%BC%E3%83%AA%E3%82%A2%E3%83%B3%E5%9E%8B#C99
> C99ではブーリアン型を格納したりするための型が作られ、その型のためのキーワード _Bool が追加された。
977デフォルトの名無しさん
2021/10/11(月) 22:58:31.30ID:Fcy0jrOe >>976
Wikipediaで言うと
https://ja.m.wikipedia.org/wiki/終了ステータス
の意味論最終段
時には、終了ステータスをうまく設計し、呼び出した側のプログラムがそれをそのまま条件分岐のインデックスとして使うということも可能である。
の所かな。
結局、
>>975 ですよね。
Wikipediaで言うと
https://ja.m.wikipedia.org/wiki/終了ステータス
の意味論最終段
時には、終了ステータスをうまく設計し、呼び出した側のプログラムがそれをそのまま条件分岐のインデックスとして使うということも可能である。
の所かな。
結局、
>>975 ですよね。
978デフォルトの名無しさん
2021/10/11(月) 23:33:54.95ID:0Us0xwCf >>976
C API的には
EXIT_SUCCESS
EXIT_FAILURE
を使う
前者は0であることが規格で決まってる
後者は0以外だが特に決まってない
特定の値、例えば1に依存したいならこのマクロは使ってはいけない
C API的には
EXIT_SUCCESS
EXIT_FAILURE
を使う
前者は0であることが規格で決まってる
後者は0以外だが特に決まってない
特定の値、例えば1に依存したいならこのマクロは使ってはいけない
979デフォルトの名無しさん
2021/10/11(月) 23:35:05.68ID:0Us0xwCf >>973
マクロ名が成否なんで
マクロ名が成否なんで
980デフォルトの名無しさん
2021/10/12(火) 00:23:03.15ID:4emiI4KE >>978
「C API」とか言うヤツがどこまでわかってんだか。w
「C API」とか言うヤツがどこまでわかってんだか。w
981デフォルトの名無しさん
2021/10/12(火) 00:47:23.22ID:lvIpixgN ルビーの国へさっさとお帰り
982デフォルトの名無しさん
2021/10/12(火) 02:14:19.27ID:jMkI4z1q C/C++の関数は成功で1を返すのが多いと思う
strcmpみたいなのは例外
WindowsのAPIとかunixのシステムコールも基本的には同上だと思う
ところがシェルのコマンドとして観た場合 !0 は失敗で成功が 0
初心者はここで混乱する
strcmpみたいなのは例外
WindowsのAPIとかunixのシステムコールも基本的には同上だと思う
ところがシェルのコマンドとして観た場合 !0 は失敗で成功が 0
初心者はここで混乱する
983デフォルトの名無しさん
2021/10/12(火) 02:50:11.86ID:qBBV2SpK984デフォルトの名無しさん
2021/10/12(火) 04:02:37.92ID:4emiI4KE >>982
またええかげんなことを。。。
strcmpの戻り値は、成功か失敗かではなく、大小関係だから。
C標準関数、UNIXシステムコールの多くは、失敗時に-1、成功時は0や非負整数を返す。
ちなみにエラーの内容はグローバル変数errno。
初心者は、歴史的事情とか現実の適当さとかを知らない。
だから、まったくの別物にも、なにか統一的なルールがあるはず、と勝手に夢想して勝手に混乱してまう。
そんなヤツもじきにわかる。
ルールがあるとしたらただひとつ、ルールなんか存在しないのだということ。
つーか、ええから黙って覚えろ!
またええかげんなことを。。。
strcmpの戻り値は、成功か失敗かではなく、大小関係だから。
C標準関数、UNIXシステムコールの多くは、失敗時に-1、成功時は0や非負整数を返す。
ちなみにエラーの内容はグローバル変数errno。
初心者は、歴史的事情とか現実の適当さとかを知らない。
だから、まったくの別物にも、なにか統一的なルールがあるはず、と勝手に夢想して勝手に混乱してまう。
そんなヤツもじきにわかる。
ルールがあるとしたらただひとつ、ルールなんか存在しないのだということ。
つーか、ええから黙って覚えろ!
985デフォルトの名無しさん
2021/10/12(火) 09:48:27.17ID:EPRomWCK986デフォルトの名無しさん
2021/10/12(火) 10:39:00.32ID:l2L6GWVJ だからC言語で真偽値を返したいって言ってるんだろ!
987デフォルトの名無しさん
2021/10/12(火) 10:52:14.50ID:OF6dTiE4 関数とプログラムの返り値を一緒にするなよバカ
988デフォルトの名無しさん
2021/10/12(火) 13:27:15.11ID:4emiI4KE >>986
じゃあシェルスクリプトのスレに来んなよ!w
じゃあシェルスクリプトのスレに来んなよ!w
989デフォルトの名無しさん
2021/10/12(火) 13:39:53.56ID:FcrICImt >>982
まあ、これなんだよね(笑)
要はシェルスクリプトだけは成功やノーエラーは0でないとだめよん、と覚えておきゃいいだけよ。
他は他でそれぞれの流儀があるならそれに従いなさい、ってだけのこと。
まあ、どうしてもってんなら、シェルスクリプトで成功で1を返したっていいけど、あとあと面倒くさいことになるよ、ってだけ。
まあ、これなんだよね(笑)
要はシェルスクリプトだけは成功やノーエラーは0でないとだめよん、と覚えておきゃいいだけよ。
他は他でそれぞれの流儀があるならそれに従いなさい、ってだけのこと。
まあ、どうしてもってんなら、シェルスクリプトで成功で1を返したっていいけど、あとあと面倒くさいことになるよ、ってだけ。
990デフォルトの名無しさん
2021/10/12(火) 15:15:35.32ID:FcrICImt つか、問題が少しずれてるんだな。
シェルスクリプトで、0がノーエラーでなければいけない理由はif文の条件式の判定が
特殊だから。
シェルスクリプトでは、
if C then; A else B fi
となってる場合、Cが0のときが真という扱いになっているから。
普通のプログラミング言語では、ここはCが0のときは偽、それ以外は真。
ここがシェルスクリプトの独特な点。
だから、成功は0を返しなさいよ、ってことになるわだ。
シェルスクリプトで、0がノーエラーでなければいけない理由はif文の条件式の判定が
特殊だから。
シェルスクリプトでは、
if C then; A else B fi
となってる場合、Cが0のときが真という扱いになっているから。
普通のプログラミング言語では、ここはCが0のときは偽、それ以外は真。
ここがシェルスクリプトの独特な点。
だから、成功は0を返しなさいよ、ってことになるわだ。
991デフォルトの名無しさん
2021/10/12(火) 15:55:22.72ID:4emiI4KE >>990
そもそも、シェルスクリプトのifの後に書けるのは条件式ではない。
条件式だとか思うから、ほかと違うんだ、特殊なんだと考えてしまったりして混乱する。
あくまでコマンドラインなんだから、ほかのプログラム言語を引き合いに出そうとした時点でもうおかしい。
そもそも、シェルスクリプトのifの後に書けるのは条件式ではない。
条件式だとか思うから、ほかと違うんだ、特殊なんだと考えてしまったりして混乱する。
あくまでコマンドラインなんだから、ほかのプログラム言語を引き合いに出そうとした時点でもうおかしい。
992デフォルトの名無しさん
2021/10/12(火) 16:22:35.41ID:FcrICImt >>991
あくまでもコマンドライン、って考え方がもうおかしい(笑)
コマンドラインってのはあくまでも多少制限されているだけのスクリプトを書く場所、だよw
あと、ifの後に書くのは条件「式」だよ。そういう屁理屈こねたいなら、値ってのは式のうち、てくらいの常識はわきまえておいてねw
あくまでもコマンドライン、って考え方がもうおかしい(笑)
コマンドラインってのはあくまでも多少制限されているだけのスクリプトを書く場所、だよw
あと、ifの後に書くのは条件「式」だよ。そういう屁理屈こねたいなら、値ってのは式のうち、てくらいの常識はわきまえておいてねw
993デフォルトの名無しさん
2021/10/12(火) 16:33:25.35ID:4emiI4KE994デフォルトの名無しさん
2021/10/12(火) 16:35:06.18ID:FcrICImt995デフォルトの名無しさん
2021/10/12(火) 16:37:10.01ID:FcrICImt996デフォルトの名無しさん
2021/10/12(火) 16:51:48.17ID:h64P2lE5 シェルスクリプトのifの後に書けるのは条件式ではない、コマンド
コマンドライン云々はif文のそこにではなく、シェルスクリプトがなんのためにってことだろう
まあ未だに他の言語と同じと言い張り、いろいろ理解力が足りないのにイキってるw奴には読めない理解できないんだろな
コマンドライン云々はif文のそこにではなく、シェルスクリプトがなんのためにってことだろう
まあ未だに他の言語と同じと言い張り、いろいろ理解力が足りないのにイキってるw奴には読めない理解できないんだろな
997デフォルトの名無しさん
2021/10/12(火) 17:43:56.49ID:FcrICImt >>996
コマンド呼び出しになるのは「式の値」が問題だからだよ。
ほんと面倒くさいな。true、falseコマンドも知らねーの?w
あくまもコマンドラインだから、シェルスクリプトはプログラムじゃない、プログラム言語じゃないと
強弁するつもりなの?w
あのさあ、俺が誰かなのかを下衆って勘繰る暇があるなら、コンピュータと日本語を
ちゃんと勉強しような?w
コマンド呼び出しになるのは「式の値」が問題だからだよ。
ほんと面倒くさいな。true、falseコマンドも知らねーの?w
あくまもコマンドラインだから、シェルスクリプトはプログラムじゃない、プログラム言語じゃないと
強弁するつもりなの?w
あのさあ、俺が誰かなのかを下衆って勘繰る暇があるなら、コンピュータと日本語を
ちゃんと勉強しような?w
998デフォルトの名無しさん
2021/10/12(火) 17:50:56.74ID:elEZT6pO999デフォルトの名無しさん
2021/10/12(火) 17:51:17.62ID:elEZT6pO1000デフォルトの名無しさん
2021/10/12(火) 17:52:21.03ID:elEZT6pO はい、おしまい
真偽値と終了ステータスの区別もつかないのはアホ
真偽値と終了ステータスの区別もつかないのはアホ
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 229日 8時間 32分 7秒
新しいスレッドを立ててください。
life time: 229日 8時間 32分 7秒
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 【コメ】卸売業者「簡単に安売りできない」 「大暴落起きれば大赤字に」 JA「新米の販売進度が近年になく遅い。コメの回転が悪い」 [Hitzeschleier★]
- 中国から訓練の連絡あったが、区域など具体的な内容知らされず=小泉防衛相 [♪♪♪★]
- 空自機レーダー照射、音声データ公開 中国 ★4 [蚤の市★]
- 「残クレ」でマイホーム、国が銀行向け保険 新型住宅ローン普及促す -日経 ★2 [少考さん★]
- 【高市早苗総理】食料品消費減税に慎重「今すぐ約束できない」…「物価上昇率は徐々に落ち着いていくと見込んでいる」 [Hitzeschleier★]
- 高市早苗総理「農水大臣が大好きなおこめ券」 野党が“おこめ券”追及 [Hitzeschleier★]
- 【高市速報】小泉進次郎「事前に中国軍から飛行訓練を開始すると連絡があったのは事実」 [931948549]
- 【正論】高市さん「『企業献金について与野党で協議する』という答弁は石破個人のものであり、もはや無効」特定野党を完全論破 [519511584]
- 【高市悲報】キャバクラ維新奥下、調査研究費としてトケドロ高橋洋一チャンネルにバチーン!と課金😤 [359965264]
- 【悲報】高市早苗政権に文春砲が連発! [115996789]
- 【正論】高市さん「長期金利が上がり続けていくことよりも、日本が成長していく方が大事」 [519511584]
- 自作pc時期が悪いおじさん、絶命 [329329848]
