シェルスクリプト総合 その36

レス数が900を超えています。1000を超えると表示できなくなるよ。
2021/02/25(木) 09:20:14.64ID:ZyJLXTlk
シェルスクリプトに関する総合スレッドです。

全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。

前スレ: シェルスクリプト総合 その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/
2021/08/06(金) 14:52:24.37ID:j92KspJx
>>834 ???
bash -c '
a="1 2 3"
printf "/%s/" $a
'
dash -c '
a="1 2 3"
printf "/%s/" $a
'
2021/08/06(金) 15:08:57.47ID:rcBy4jaU
>>835
あのさぁ、なんで実行結果を書かないの?
やってみればすぐわかるだろ

$ bash -c '
> a="1 2 3"
> printf "/%s/" $a
> '
/1//2//3/

dash -c '
> a="1 2 3"
> printf "/%s/" $a
> '
/1//2//3/


まーーーーーーーーーったく同じ
2021/08/06(金) 17:19:21.97ID:j92KspJx
>>836
いやさ,それの実行結果が一緒なのに,
$ bash -c '
set -- "a b c" "d e f"
set -- $1 "$@"
echo $1
'
→a
$ dash -c '
set -- "a b c" "d e f"
set -- $1 "$@"
echo $1
'
→a b c
こうなるのはおかしいだろってことだよ。

話わかってるか?
2021/08/06(金) 17:26:48.38ID:rcBy4jaU
消えな。いちいちデマ流すな。

dash -c '
set -- "a b c" "d e f"
set -- $1 "$@"
echo $1
'
a
2021/08/06(金) 19:29:06.94ID:mgQwZ+tq
dashで>>832見たとき試した時は、
a b c
になったけど、しばらくしたらなぜかw、
a
になるようになった、にしかならないようになった

とりあえず、現在は a b c は気のせい/何かの間違いだなと思ってるw
(多分なんかの環境値かなあ??)
メイン環境ではこんなんだったけど、ほぼあんま使わないクリーンに近いUbuntu(VM)でも a だからな

zshはデフォでは、
a b c
emulate posix でも a b c、emulate bash で a
posix でも a になるべきなんだろうな
単に shwordsplit on にするだけだけど emulate posix 時オプションセットのバグかなあ
2021/08/06(金) 19:38:55.34ID:rcBy4jaU
自分のミスを素直に認められるようになろうな
2021/08/06(金) 21:35:38.59ID:mgQwZ+tq
俺は ID:j92KspJx でないからな
2021/08/06(金) 23:44:34.47ID:j92KspJx
ミスといえば >>832>>834 の流れを読まずに
>>835 だけを見て意味不明な返信 (>>836) をしてたミス≠ヘどうするんだろうな。
2021/08/07(土) 01:06:35.02ID:m9mcPIVQ
お前もある意味勘違い(他の環境でなり試せばわかること)で騒いでいたんだから、
何をなんかその嫌らしいことすんなよ
2021/08/07(土) 01:06:57.62ID:m9mcPIVQ
俺は ID:mgQwZ+tq なw
2021/08/07(土) 01:50:03.69ID:m9mcPIVQ
>>839
>emulate posix でも a b c、emulate bash で a
>posix でも a になるべきなんだろうな
>単に shwordsplit on にするだけだけど emulate posix 時オプションセットのバグかなあ

posix shell を emulate する場合は posix ではなく sh か
じゃあ、psoix はなんなんねん、イマイチわからない。もしかしてそんなの無いとかか??w

emulate sh にしたら、
shwordsplit on
になるかと思いきや、
noshwordsplit off
って、shwordsplitに変わってnoshwordsplitに(同じだが)。そんなにoffに拘りたいのか

なかなかクセが強い感じw
ほぼzshネタ。でも、zshでposix shell互換にするにはというお話でした
2021/08/07(土) 03:07:17.12ID:UOc5M9xg
zshでemulate bachfileってやったら
バッチファイルモードになったYO!
2021/08/07(土) 08:27:51.67ID:m9mcPIVQ
なる。 zsh|sh|ksh|csh だけか
以外ではエラーにならずに zsh が指定されたとみなすか

起動時とのでオプション変わるから別のオプションセットがセットされてんのかと思った
2021/08/07(土) 08:34:57.40ID:UOc5M9xg
emulate cshってどこまでcshと互換性あるの?
cshのシェルスクリプトがzshで動くわけ?
2021/08/07(土) 08:36:21.73ID:m9mcPIVQ
>以外ではエラーにならずに zsh が指定されたとみなすか
いや、bash が指定されたら sh とみなすってのはあるみたいだな。例外か?
bash対応のチラっとあるからbash互換のオプションセットがあるのかと期待してた/思い込んでたんだけど、単に(例外的に) posix shell 互換にするだけなのね
2021/08/07(土) 08:40:12.61ID:UOc5M9xg
emulate "b型の血液が足りないんです!どなたか!どなたかいませんか?"
だったらshになるな。うん。
2021/08/07(土) 08:41:49.65ID:m9mcPIVQ
>>848
シェルオプションが変わるだけかなあ
一応、元々 ksh+tcsh で開発されてるし、cshの命令文も動いたりもするが、なんか全部ってわけじゃないなて結論で俺は確認はやめてた、以前
cshのオプションセットになったら、もっとちゃんと動くのかもしれないし大したことがないかもしれない、どうなんだろねw
2021/08/07(土) 08:42:50.92ID:m9mcPIVQ
>>850
へー
てか、お前詳しくzsh知ってるだろ?
2021/08/07(土) 08:44:08.17ID:UOc5M9xg
cshの命令というかコマンド?は、互換関数でも作れば対応できるんじゃねと思ってるんであんまり気にしないんだが
cshの文法ってzshに組み込めるようなものなのかなって気になってる
cshよく知らんけど、文法自体が少ないのか?関数もなかったはずだよね
2021/08/07(土) 08:48:10.86ID:UOc5M9xg
>>852
いやしらんてw
昔の人の実装者の気持ちになって考えたら
「お?これだけのパターンなら最初の一文字だけ比較すればいいんじゃね?俺天才じゃねwww」って
考えそうだなって思っただけ

なんつーか、手抜きだよなー。

あー、というかこれbash対応じゃなくて
bourne対応じゃね?bourne=shだし
2021/08/07(土) 08:50:44.33ID:UOc5M9xg
bshのパターンも有るか。でもjshはzshだな
2021/08/07(土) 08:58:13.11ID:m9mcPIVQ
>>853
素では、cshの(一部)命令も書ける=B shellとチャンポンできるて感じ
ベースは B shell だがそれに csh の命令文も B shell の命令文と同じように書けるって感じ。関数も普通に使える
emulate csh でそゆのがどう変化する/壊れるのかは試してもないのでわからん、どうなんだろねw

>>854,855
なるほど、それは失礼
zshが起動された時の 起動名 (shだったらsh互換でとかの) が確かそんな感じで判断しますのようなのがあったな、そういえばってので
それと同じかもっと手抜きなのかもね
2021/08/07(土) 10:53:52.05ID:231wocV5
ボーンシェル
コーンシェル
ゾーンシェル

ぞーーーーーん!
2021/08/07(土) 12:55:43.98ID:UOc5M9xg
トリビア

1985年に日本で生まれたシェルがある
そのシェルは 2020年まで存在していた

その名も
2021/08/07(土) 18:45:34.65ID:RMo9hPMi
シェルじゃなくてシエル?

あ、これは1991年だった。
2021/08/09(月) 01:48:03.65ID:Ln+AsnId
キヤノン
キユーピー
シヤチハタ
富士フイルム
エドウイン
2021/08/09(月) 03:21:27.64ID:iQ+Egq/N
中川しようこ
2021/08/09(月) 12:43:08.30ID:GX8oEfXz
ビックカメラ
2021/08/10(火) 04:05:37.98ID:dBGoRJhg
>>858
オランダ産やんけ
2021/08/10(火) 22:03:06.30ID:h61oVuOW
カステラ
ゲーテ
2021/08/15(日) 22:01:32.56ID:iDzFR5O3
新しいシェルを作りたいのですが
どのアルファベットが空いてますか?
866デフォルトの名無しさん
垢版 |
2021/08/15(日) 22:19:10.80ID:G/xk0WlY
iとo
2021/08/15(日) 23:21:43.56ID:ZsODeO33
bshとbashがあるくらいなんやから、一切気にしなきゃええんちゃう?w

勝てば官軍!
勝てばね!
ふつうは、戦える立場になれないけど!
2021/08/16(月) 13:46:35.37ID:umL41p0T
ishは止めれ
2021/08/16(月) 23:50:00.46ID:sZNsU9Vp
https://ja.wikipedia.org/wiki/Ish
2021/08/17(火) 00:52:16.82ID:/lTg0IsM
じゃあoshで
2021/08/17(火) 00:52:32.42ID:/lTg0IsM
おいっしゅー!
2021/08/17(火) 01:20:24.26ID:5M+zf85m
Ош
873デフォルトの名無しさん
垢版 |
2021/08/22(日) 03:53:36.86ID:0Cz6ueFz
Rustのメモリ安全性はボローチェッカーによって担保されているが、
Nimと比較してRustはタイプ量が多い事により限りなく低い生産性と
C++のような高い難読性、超巨大なバイナリ生成性能を兼ね備えています

Nimはバージョン1.5.1でRustのボローチェッカーに似た「View types」が実装されれば、
GC無しのView typesで参照の有効性を検証することによってメモリ安全性を保証しつつ
限りなく抑え込まれたタイプ量で高速化したCのソースコードを吐き出せます

Nimソースコード ==nimコンパイラ==> Cソースコード ==Cコンパイラ==> バイナリ

なので、nimコンパイラが通った時点でメモリ安全性が担保されませんか?

Nimの実験的特徴
著者: アンドレアス・ルンプ
バージョン: 1.5.1
http://nim-lang.github.io/Nim/manual_experimental.html


Nimは限りなく抑え込まれたタイプ量で高い生産性とPythonのような高い可読性を実現し
ているにもかかわらず、高速なCのソースコードを吐き出せるのでC言語でリモートワーク
されている方は割り振られた仕事が早く終わっても終わってないふりをして怠けることができる

「怠け者とはこうあるべきだ!」と言うとても大事な事を Nim は我々に教えてくれます
874デフォルトの名無しさん
垢版 |
2021/08/22(日) 13:22:16.41ID:0Cz6ueFz
Rustのメモリ安全性はボローチェッカーによって担保されているが、
Nimと比較してRustはタイプ量が多い事により限りなく低い生産性と
C++のような高い難読性、超巨大なバイナリ生成性能を兼ね備えています

Nimはバージョン1.5.1でRustのボローチェッカーに似た「View types」が実装されれば、
GC無しのView typesで参照の有効性を検証することによってメモリ安全性を保証しつつ
限りなく抑え込まれたタイプ量で高速化したCのソースコードを吐き出せます

Nimソースコード ==nimコンパイラ==> Cソースコード ==Cコンパイラ==> バイナリ

なので、nimコンパイラが通った時点でメモリ安全性が担保されませんか?

Nimの実験的特徴 バージョン1.5.1
http://nim-lang.github.io/Nim/manual_experimental.html

第二プログラミング言語として Rust はオススメしません Nim をやるのです
https://wolfbash.hateblo.jp/entry/2017/07/30/193412


Nimは限りなく抑え込まれたタイプ量で高い生産性とPythonのような高い可読性を実現し
ているにもかかわらず、高速なCのソースコードを吐き出せるのでC言語でリモートワーク
されている方は割り振られた仕事が早く終わっても終わってないふりをして怠けることができる

「怠け者とはこうあるべきだ!」と言うとても大事な事を Nim は我々に教えてくれます
875デフォルトの名無しさん
垢版 |
2021/08/31(火) 18:02:21.42ID:UqDTQOtm
awkでデータの中にスペースを入れるにはどうしたらいいんでしょうか?
876デフォルトの名無しさん
垢版 |
2021/08/31(火) 18:14:12.67ID:UqDTQOtm
"a b" "c d"

みたいなデータを読み取れませんか?
2021/08/31(火) 18:41:30.09ID:zJL9bFvV
"a b" と "c d" に分割したいのであれば GNU awk の FPAT を使って

gawk -vFPAT='"[^"]*"' '{ ... }'

なんてできるけど、ダブルクォートで囲まれた内部でダブルクォートが
使われる場合には。。。
2021/08/31(火) 22:45:22.41ID:S8r07VdU
Ruby では、CSV 列内の""(クォート文字)は、\" に、
列内の改行コード・カンマ(行区切り・列区切り文字)も、適切に処理される

列内に、CSVの特殊文字、行区切り・列区切り・クォート文字が無ければ、列はクォート文字で囲まれない。
もちろん無条件に、すべての列を囲んでもよい

require 'csv'

input = <<"EOT"
"a""a","b,b",あ
"c
c","d\nd"
EOT

p input_ary = CSV.parse( input ) # 2次元配列
#=> [ ["a\"a", "b,b", "あ"], ["c\nc", "d\nd"] ]

# 2次元配列を、CSV 文字列に変換する
csv_str = input_ary.map( &:to_csv ).join
puts csv_str

出力。元に戻る
"a""a","b,b",あ
"c
c","d
d"
2021/09/03(金) 13:05:02.74ID:prpSRVT9
うわでた
2021/09/18(土) 18:19:12.65ID:a1LlWfun
頭のおかしい人に以下のようなことを言われました

>>基本、スクレイピングは営業妨害との戦い。
>>どの本にも、そう書いてある。
>>スクレイピングを推奨する本はない

具体的な書籍名を教えてください


>>5ch は、マルチポスト禁止!
>>同じ質問を、複数のスレや外部のサイトに書いてはいけない

どこでそんなルールが決まっているのでしょうか?
2021/09/18(土) 18:28:53.74ID:6JilEPez
本人に聞けよ
2021/09/18(土) 18:42:49.46ID:jUwIv+ht
随分偉そうな質問者だこと
2021/09/18(土) 20:04:20.39ID:ra+RGGfj
スクレイピングはサイト運営からすればボットと同じ迷惑行為。警告を無視して続ければ営業妨害に認定される可能性もある。
マルチポストはいわゆるネットマナーに反する行為。質問者がマルチポストを繰り返せばその質問者が「頭のおかしい人」と看做されるだろう。
2021/09/19(日) 10:51:23.48ID:xR+u8nco
技術的に無能だが一般常識にも無能なのはたまに居るな
2021/09/19(日) 10:54:58.61ID:ZpH8FzBH
シェルショッカーとリッチー大佐のお二人ですなw
2021/09/21(火) 03:27:47.67ID:brXTSPi5
あと Ruby の基地外な
rubikitch のことじゃないよ
887デフォルトの名無しさん
垢版 |
2021/09/22(水) 14:28:08.32ID:Te29kBsr
ニュースグループならクロスポストってのが出来たんだけどな
888デフォルトの名無しさん
垢版 |
2021/09/22(水) 14:42:56.06ID:RtQe+ZM1
>>876
a_b_c_dをa_bとc_dにしたいの?
アンスコ→半角スペース
2021/10/02(土) 09:12:44.17ID:AShvd7nN
bash sample1.sh && sample2.sh
でsample.shがexitとかfalse的な感じだったらsample2.shは実行しない
という処理をするにはどうしたらいいのでしょうか・・?
2021/10/02(土) 09:30:28.85ID:AShvd7nN
補足です >>889
そもそもやりたいことはsample2.shの冒頭に
if 条件; then
echo "o"
fi
みたいな条件式が出てくるのですが
その条件は他のsample3.shでもsample4.shでも重複して出てくるので
分けたいなと思いました
そういう書き方があるのかな、と
2021/10/02(土) 11:10:29.57ID:AShvd7nN
とりあえず自己解決?しました
外部読み込みで関数引き出すことにしました
しかしなぜか
if 関数1; then
echo "o"
else
echo "x"
fi
関数1の返り値が0のとき"o"、1のとき"x"となり
思ってたのと逆になりました
関数1 () {
return 0
}
2021/10/02(土) 11:42:50.26ID:rSA8/7/e
プロセスの終了ステータスと同じ思想
0を返すなら正常
0以外を返すなら異常
2021/10/02(土) 12:39:57.86ID:AShvd7nN
>>892
なるほど
python行ったり来たりするのでなんか頭こんがりそうです;
2021/10/02(土) 14:45:07.98ID:lWVjrMOX
>>891
逆ではない。それで良いのだ。
成功したら0を返すというUNIX等での昔からの慣習に従っているだけ。
if は動かしたコマンドや関数の終了ステータスが0なら成功したと認識して then の後を実行しようとするように作られている。
2021/10/02(土) 14:47:33.71ID:lWVjrMOX
ってリロード忘れて書いたら既に答えが書かれて話が終わっていたorz
2021/10/02(土) 15:12:31.16ID:HPoADLry
>>893
PythonならTrue/Falseやろ。
ムダに混乱すな。w
2021/10/02(土) 15:39:19.39ID:yaQQxYBO
シェルスクリプト内で return true とか書ければいいんだが。

引数なしの return はその直前のコマンドの戻り値を戻すので
true ; return
とか
return $(true)
って感じか?
2021/10/02(土) 15:52:06.48ID:yaQQxYBO
true=0 ; false=1 って定義しておいて return $true もあるか
2021/10/02(土) 16:16:47.40ID:qz0ghb/n
>>893
grepコマンドのexit statusを調べるんだ
それでもう忘れなくなる
2021/10/02(土) 16:38:14.15ID:HPoADLry
>>897
やめろ。w
逆に混乱のもとや。
どうしてもっつーなら、EXIT_SUCCESS/EXIT_FAILUREか?

プロセスの戻り値についてちゃんと把握したら、混乱なんかなくなるで。
実質8ビットとか、シグナル結果も混ざるとか。
>>899もそういうひとつ。
2021/10/02(土) 17:40:54.85ID:yaQQxYBO
>>900
(実装上は?ではあるが)C言語で言う \0 や NULL は必ずしもゼロではないから
ハードコーティングするな、みたいな話と同じでは?

C言語で EXIT_SUCCESS がマクロ定義されているのと同じでは?

あとシェルスクリプトで EXIT_SUCCESS って定義されてる?
2021/10/02(土) 18:23:30.06ID:R5KX+nmU
>>896
0はfalsy, 1はtruthy
2021/10/02(土) 18:40:53.09ID:A8TEcsRS
>>899
cmp, diffなんかも同じ
これは本来のタスクの成否に加えてエラー状態でliftしてるわけで
option typeと同じ
2021/10/02(土) 18:54:39.94ID:a5sjMDOS
>>901
\0はゼロだよねぇ?
2021/10/02(土) 19:00:42.14ID:HPoADLry
>>901
そんな机上の空論は、シェルに不要。
ハードコードとはもう言わん領域。
おまえは#define ZERO 0とかすんのか?w
2021/10/02(土) 19:08:57.75ID:HPoADLry
>>904
イカれたエンコーディングが対象で、暗黙変換がしっかりされるなら、かならずしも0でなくてもええかもな?

イバラの道というか針山というか、愚かな夢想やけど。w
2021/10/02(土) 23:25:16.60ID:yaQQxYBO
>>905
おいおい話ずれてないか?
C言語は if 文に数字を渡したらノンゼロで成立、シェルスクリプトはゼロで成立って話なんだが
つまり、C言語は #define TRUE 1 でシェルスクリプトは TRUE=0 ってこと

>>904
定義されていないからゼロとは限らないって話らしいよ
2021/10/02(土) 23:47:19.06ID:HPoADLry
>>907
おまえが勝手に勘違いして決めつけとるだけや。w

0は「TRUE」をあらわすのではない。
ただの「0」や。
シェルとかでは一般的に、0を成功と見なすことにしとるだけ。

プログラムによってはあえて、1なら成功半分失敗半分、2なら超失敗、みたいにしてもええ。
2021/10/03(日) 01:12:15.52ID:xAO5mPIE
>>907
\0が定義されてないの?

nullはnullであって0じゃないけど
\0は0でしょう?
2021/10/03(日) 01:52:00.50ID:prztZm/y
>>909
Cでは、文字コードが定義されてない。
エスケープシーケンスは定義されとるが、その数値としての値が定義されてるかどうかは別の話や。

Cにはスタンドアロン環境があるし、>>906みたいに対応できなくはないやろうし、(char)¥0は(int)0でなければならないはずやが、それでもメモリ上では0でない可能性はあっていい気がするわ。

堅実にはありえないような、愚かな夢想やがな。w
2021/10/03(日) 21:33:19.87ID:lRGZaQA9
Makefileのコマンド部分のインデントにタブ以外つかえないの地味にツライです
2021/10/03(日) 23:29:34.04ID:53YOJQpZ
>>908
俺が勘違いしているとお前がいうならそれでいいよ

じゃあ新しい話

return 0 が C言語とシェルスクリプトで意味が真逆で紛らわしいんだがどうする?
2021/10/04(月) 00:19:02.66ID:zDusbFKv
>>912
アホにはムリ!
あきらめろ!
2021/10/04(月) 00:38:06.79ID:68bdvZVH
郷に入っては郷に従え
2021/10/04(月) 04:16:49.89ID:hDmlyFvp
>return 0 が C言語とシェルスクリプトで意味が真逆
え?
2021/10/04(月) 11:18:50.12ID:k4THeifQ
main()のreturnに関してはshと一緒だが
returnに限らずifや論理演算で使うときの0/0以外は意味が真逆って話ですかね

どうするもこうするも、脳内で切り替えるしかないのでは
2021/10/04(月) 11:27:18.04ID:up54+LrH
言語によって切り替えるのが普通の人だ
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でした
2021/10/04(月) 14:30:02.14ID:hDmlyFvp
>>916
成功(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}}"
2021/10/04(月) 15:01:04.22ID:TUhdMDNq
val="val_$s"
echo "${!val}"
2021/10/04(月) 15:29:45.66ID:zDusbFKv
>>919
> シェルスクリプトは成功失敗でしかないからなwhileやifなどの基本的な制御文は
いや、それはCも同じや。w
条件部に任意の式を書けるだけ。

そいつは、物事をムリヤリにでも単純化したいだけやと思う。
まあ、気持ちはわからんでもない。
ワイにもそういうときはあった。
初心者かつ理想主義者ならではなんかね。
2021/10/04(月) 16:21:38.67ID:hDmlyFvp
>>922
C は 成功失敗 とかではなく、評価式の結果の値が 0かそれ以外か だけど
原典のK&Rに書いてある通り
真偽 Booleanと言えるが そもそもはBooleanが無いから 0かそれ以外か だな

シェルスクリプトはモロに成功失敗でしかないから、true「コマンド」のexit statusが 0=成功 でそれで成り立ってるんだけど
2021/10/04(月) 16:30:51.81ID:zDusbFKv
>>923
シェルスクリプトの判定は、プロセスの終了ステータスの値が0かそれ以外かなだけ。
それが成功か失敗かはただの解釈の話。
Cと同じ。

testコマンドとか知らんのか?
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でなんか書いたことあるなら当然知っているだろう
2021/10/04(月) 16:47:03.61ID:jGq6SyTd
>>920
¥マークをバックスラッシュにしたらできました
>>921
一度格納するのですね できました

どちらもできました
ありがとうございました。
2021/10/04(月) 17:25:08.90ID:seuesddr
[ ] がコマンドだって知らない人がいるのかな?

シェルスクリプトの真偽はCと同じですよ
コマンドの終了ステータスはCもシェルスクリプトも0が正常、0以外が異常

echo $((2 > 1))
1

↑の通りシェルスクリプトの真は1
2021/10/04(月) 17:32:53.14ID:68bdvZVH
read()って0が正常なんだっけ?
2021/10/04(月) 17:43:03.44ID:hDmlyFvp
>>927
真(0以外もしくは1)偽(0) だけだと思うから、変なこと言い出しただけだろう
成功(0)失敗(0以外、だいたい負数もしくは-1) もあり、シェルスクリプトは 成功失敗 でしかないって話だよ
「真偽はCと同じ」とか言い出すから...w 2分岐でしかないとこのを真偽と言いたいのかな?

シェルスクリプトの制御文はEXIT STATUSしか見ないから、そんな例は無意味だろう
普通 if 文は 真/正 だったら〜でif分内に入るが、その例を持ち出してどう説明するの?
2021/10/04(月) 17:57:13.20ID:zDusbFKv
>>925
EXIT_SUCCESSとかはただの超後付けやぞ?w
もともとそんなもんはなかった。

条件判定は、判定が逆なだけで、やってることが同じ。
成功か失敗かではなく、値しか参照してない。
読解力がないヤツはめんどいな。。。

ま、いいけど。では、これにて。
2021/10/04(月) 18:03:18.56ID:hDmlyFvp
>>930
後付けでも 0 は正常終了って決まってることだろに
後付けでわかりやすく定義しただけだろう。EXIT_SUCCESSが定義されてから 0 が正常終了になったとでもいいたいの?
反論のために言い出したのが「後付け」って、何もわかってないなとしか思えんぞ

「判定が逆なだけ」って...なんで逆かを言ってるんだが、自称読解力あるはずなのに、まだ読めないのな
>>927の最初に言ってるのに、無視して(理解できないからか?)変なとこ食いつくだけだあるなとしか思えない
2021/10/04(月) 18:08:15.93ID:hDmlyFvp
成功(0)失敗(0以外、だいたい負数もしくは-1)
というのは太古から存在してるというのを、元々のやつはおろかそいつに反発(?)してるやつもどうやら知らないらしい...
何で知らないのか理解できない、Cに限らず他の言語でもあるのに
2021/10/04(月) 18:16:05.28ID:hDmlyFvp
>>931
>>927の最初に
>>919の最初に
失礼

と、わかりやすそうなの探してきたぞ,
https://en.wikipedia.org/wiki/Exit_status
をよく読んでみ
2021/10/04(月) 19:13:01.03ID:seuesddr
>>929
何がいいたいのかさっぱり

if [ $bool = 1 ]; then
で真だったらって書けるやろ
分かりづらいって言うなら

TRUE=1
if [ $bool = $TRUE ]; then
でもいいし
レス数が900を超えています。1000を超えると表示できなくなるよ。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況