- 1 名前:デフォルトの名無しさん mailto:sage [2019/08/10(土) 23:17:50.64 ID:L+B8OP2P.net]
- シェルスクリプトに関する総合スレッドです。
全般 ・荒しは無視しましょう。 ・丁寧な姿勢を心掛けましょう。 ・ネチケット(死語)を意識しましょう。 ・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。 シェルスクリプト総合 その30 https://mevius.5ch.net/test/read.cgi/tech/1561989867/
- 962 名前:デフォルトの名無しさん mailto:sage [2019/10/22(火) 15:21:29.60 ID:p4xpj08d.net]
- >>945-946
ありがとうございます perlは入っており期待通りに動作しました perlの方が高機能なのですが 環境を移したときにperlがあるか保証できないため sedでやろうと思います
- 963 名前:デフォルトの名無しさん mailto:sage [2019/10/22(火) 15:23:02.88 ID:AwOtA+WM.net]
- FLAG=true or false ?
FLAG=1 or 0 ? FLAG=1 or unset ? FLAG=1 or "" ? それ以外?
- 964 名前:デフォルトの名無しさん mailto:sage [2019/10/22(火) 20:26:37.95 ID:2f71vpaR.net]
- alias FLAG true/alias FLAG false
if FLAG; then
- 965 名前:デフォルトの名無しさん mailto:sage [2019/10/22(火) 20:27:08.55 ID:2f71vpaR.net]
- でもBashだとファイル内では既定で使えない。
- 966 名前:デフォルトの名無しさん mailto:sage [2019/10/22(火) 21:23:51.15 ID:CciDAIxr.net]
- >>952
面白いけど、サブシェルの中で変えられないから alias FLAG=true ( alias FLAG=false if FLAG; then echo true fi ) 出力 true
- 967 名前:デフォルトの名無しさん mailto:sage [2019/10/23(水) 10:43:57.77 ID:oiOUCahJ.net]
- TRUE=$([ 0 = 0 ];echo $?)
FALSE=$([ ! $TRUE ];echo $?) FLAG=$TRUE or $FALSE
- 968 名前:デフォルトの名無しさん mailto:sage [2019/10/23(水) 10:57:17.22 ID:jQcWWJt3.net]
- サイトによってrenameの構文が違うけどコマンド自体が違うのな
perl付属のprenameとutil-linux付属のrename.ulがあるとか alternativesで書き換えられてるんだからそら気付かんわ
- 969 名前:デフォルトの名無しさん mailto:sage [2019/10/24(木) 17:48:17.61 ID:mthfJT/n.net]
- >>953
知らんかった。恥ずかしいw
- 970 名前:デフォルトの名無しさん mailto:sage [2019/10/24(木) 17:49:17.77 ID:mthfJT/n.net]
- >>954
それってTRUE=0とするのと何が違うの?
- 971 名前:デフォルトの名無しさん mailto:sage [2019/10/24(木) 18:07:25.18 ID:lp1ZwQII.net]
- >>956
サブシェルは関係ない。俺もちゃんと仕様読んだわけじゃないけど、 aliasは実行時じゃなくて、1単位ごとに → パース → 実行 の パース時に変換してる感じ そして1単位というのは、 alias FLAG=true alias FLAG=false; FLAG && echo true ↑これは一行で一単位、だからtrueと表示されてしまうし 関数とか、プロンプトから、func() { 改行 とかやると } 改行 するまで、ずっと行頭に > って表示されるだろ? あれが1単位。だから↓みたいなものもtrueって表示されてしまうんだよ alias FLAG=true func() { alias FLAG=false if FLAG; then echo true fi } func
- 972 名前:793 [2019/10/24(木) 18:35:35.72 ID:n545jbBX.net]
- >>795-797
時間が経ってしまいましたが、ありがとうございました "$()"の中の"はエスケープする必要があるのかどうか、とか、変数代入への挙動とか、そういう細かいところがよくわかってなかったです。
- 973 名前:デフォルトの名無しさん mailto:sage [2019/10/24(木) 22:00:36.73 ID:mthfJT/n.net]
- >>958
あー。 aliasってたしか一つの構文解析のかなり初期段階で展開される筈だから, その一つの解析対象の内部で定義されているaliasは(当然)それ自身の解析結果には反映されんな。 このへんだろうか?? https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_10
- 974 名前:デフォルトの名無しさん mailto:sage [2019/10/25(金) 00:11:27.02 ID:6btPTvif.net]
- 次スレ
シェルスクリプト総合 その32 https://mevius.5ch.net/test/read.cgi/tech/1571929725/
- 975 名前:デフォルトの名無しさん mailto:sage [2019/10/25(金) 07:59:28.70 ID:6Bcci7V7.net]
- >>957
真は0、偽は0以外という値を意識する必要が無い (Cの真偽値は逆で紛らわしい) true/falseコマンドが使えない環境でも使える
- 976 名前:デフォルトの名無しさん mailto:sage [2019/10/25(金) 23:17:19.52 ID:TUsRGFSK.net]
- >>962
true/falseがビルトインじゃないシェルは存在しない また、[ の結果はtrueなら0、falseなら1と決まっている
- 977 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 06:21:32 ID:0I+FrAtF.net]
- >>963
> true/falseがビルトインじゃないシェルは存在しない 今ならそう言えるだろうが、かつては存在した 外部コマンドのtrue/falseがその名残りだ > また、[ の結果はtrueなら0、falseなら1と決まっている 0は数値の0であってtrueではない trueを表現するのに0を使っているだけだ まあ真偽値を扱うならtrue/falseを使えってことだな
- 978 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 09:53:59.01 ID:Q5pTtErv.net]
- trueを表現するのに0を使っているというより、真偽に成功不成功をそのまま使ってるというだけだろ
- 979 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 10:32:17.69 ID:a0V3mxKP.net]
- >>964
> 今ならそう言えるだろうが、かつては存在した かつてとはいつで、どこの実装であるのか答えなさい また、現存しない物の話をしても意味はない そもそも [ が存在しない環境では使えない 外部コマンドの [ がその名残りだ
- 980 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 10:33:01.78 ID:swDBEFOl.net]
- 成功/不成功は終了ステータスであって真偽値ではない
- 981 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 10:37:22.98 ID:3fttRo5u.net]
- え、まさか、
hoge && FLAG=$TRUE || FLAG=$FALSE : : if [ "$FLAG" -eq "$TRUE" ] then ・・・ if [ "$FLAG" -eq "$FALSE" ] then ・・・ とか書くつもり・・・?
- 982 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 10:56:36.80 ID:0I+FrAtF.net]
- >>968
終了ステータスを真偽値で判断するのか 珍しいやつだなw
- 983 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 11:14:58.17 ID:3fttRo5u.net]
- >>969
変数に真偽値を入れるって話で 終了ステータスを入れる馬鹿を皮肉ってるだけだろw
- 984 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 11:16:54.58 ID:Q5pTtErv.net]
- while true
do や、 FLAG=true or FLAG=false if $FLAG; then 真偽に成功不成功をそのままは、なんて書きたかっただけだろ、そうの方が見た目がいいしな なんでそんなに拘っているんだか
- 985 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 11:21:27.44 ID:3fttRo5u.net]
- つーか、いいかげんにしろよ。
真偽値の値を何にするかって話だろ 誰も真偽値をどうやって生成するかの話なんかしてねーよ
- 986 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 11:22:36.82 ID:3fttRo5u.net]
- いつものやつ言っとくわ
>>971 /\___/\ / / ヽ ::: \ | (●), 、(●)、 | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ | ,,ノ(、_, )ヽ、,, | < まーたはじまった | ,;‐=‐ヽ .:::::| \_______ \ `ニニ´ .:::/ /`ー‐--‐‐―´´\
- 987 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 11:23:54.27 ID:Q5pTtErv.net]
- FLAG=true or false
FLAG=1 or 0 etc なんでも好きにすればいいだろ true/falseコマンドを使った方が見た目簡潔じゃないかと思うがな、個人的に。使わんけど お前がいいかげんにしろよw
- 988 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 11:29:02.54 ID:3fttRo5u.net]
- 質問が出てる時点で、意図がわからないコードってことなんだがw
957 名前:デフォルトの名無しさん[sage] 投稿日:2019/10/24(木) 17:49:17.77 ID:mthfJT/n [2/3] >>954 それってTRUE=0とするのと何が違うの? それに>>954ののコードは、set -eで正しく動かない TRUE=$([ 0 = 0 ];echo $?) FALSE=$([ ! $TRUE ];echo $?) 意図が不明確なコードを書いて、バグを入れるのは アホでしか無いよ
- 989 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 11:32:55.31 ID:Q5pTtErv.net]
- 俺は他alias使ったのやのその話題は、なにをわざわざ凝ったことしようとしてるのか意図不明で趣味なんだろなとしか思ってない
- 990 名前:デフォルトの名無しさん [2019/10/26(土) 11:33:38.63 ID:T/HAOzs9.net]
- やっぱりどこでも動くシェルスクリプトなんて幻想なんだね…
- 991 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 11:34:25.41 ID:3fttRo5u.net]
- >>976
趣味(実用的ではないネタコード)に、正当っぽい理由をつけるなって話だ
- 992 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 11:36:44.02 ID:Q5pTtErv.net]
- ただの雑談だろ
あれを強制するなりしているわけでもないのに、なにをそう否定してんだか そんなヤツがリアルで一緒に仕事するなら思いっきりくそ叩くがなw
- 993 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 11:37:51.16 ID:3fttRo5u.net]
- あとC言語の世界しか知らんようだから言っておくと、rubyは0も1もtrueな
シェルスクリプトは反対で0がtrueで1がfalseなんだ、それ以外の回答はない!ってのは ちょっと考えが浅いんじゃないですかねぇw osishow3.hateblo.jp/entry/2017/04/20/235500 nil is false false is false 0 is true 1 is true
- 994 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 11:39:18.03 ID:Q5pTtErv.net]
- 何をひとりで妄想に走っているんだか
だれか「いいかげんにしろ」とか言ってなかったか?w
- 995 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 11:42:23.29 ID:3fttRo5u.net]
- 俺に突っかかってきてないで、シェルスクリプトの話題をしたら?
- 996 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 11:43:40.40 ID:Q5pTtErv.net]
- よくいうよw
- 997 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 11:47:29.21 ID:3fttRo5u.net]
- そりゃいうだろ、いきなりシェルスクリプトと関係ない
「俺」の話を始めるんだからw
- 998 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 11:50:09.04 ID:Q5pTtErv.net]
- 言ったことに対してはそりゃ言うだろう。お前がわざわざ言ったんだから
そんなのが無くてもいいのに。お前だった元々のやつを「アホ」呼ばわりしてるじゃん
- 999 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 15:54:12.94 ID:0I+FrAtF.net]
- >>975
set +e TRUE=$([ 0 = 0 ];echo $?) FALSE=$([ ! $TRUE ];echo $?) set -e 動かんと言ってる方がアホだと思う
- 1000 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 16:04:47.31 ID:+M+pJ73c.net]
- set -eで正しく動かない
↓ set +eと書いて動くと主張。赤っ恥w
- 1001 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 16:15:33.38 ID:0I+FrAtF.net]
- 逃げ方がチョン臭くてキモい
- 1002 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 16:17:36.78 ID:+M+pJ73c.net]
- しかも、最初の状態が set +e だったら
set -e に状態が変わってしまうというクソコード 汎用性がない
- 1003 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 16:20:27.41 ID:+M+pJ73c.net]
- true / false を使えばいいのに、[ が入ってない環境を考慮せずに、
true / false が入ってないかもしれないから [ を使ったと言う無能ぶりw
- 1004 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 16:22:55.60 ID:0I+FrAtF.net]
- 最初にset -eするとルール化するだけ
いちゃもんつけるの得意だな
- 1005 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 16:24:16.70 ID:0I+FrAtF.net]
- []やtestが使えないシェル教えてくれよ
- 1006 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 16:25:06.04 ID:+M+pJ73c.net]
- TRUEの反対だからfalseというが、
FALSEの反対もfalseになってると気づいてなくて そもそもシェルスクリプトの仕様をわかってないw [ 0 = 0 ]; echo $? # => 0 [ ! 0 ]; echo $? # => 1 [ ! 1 ]; echo $? # => 1
- 1007 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 16:27:23.30 ID:+M+pJ73c.net]
- >>992
上の方で /bin/true, /bin/false コマンドがあるんだから true, false が使えないシェルがあるはずだって主張していたぞw その理屈で言えば [ コマンドもあるんだから、 [ が使えないシェルもあるってことになるんだがなw
- 1008 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 16:28:56.67 ID:+M+pJ73c.net]
- 更に言うなら
TRUE=$([ 0 = 0 ];echo $?) FALSE=$([ ! $TRUE ];echo $?) これにサブシェルを使うのもアホらしいw
- 1009 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 16:29:21.39 ID:0I+FrAtF.net]
- >>994
cshのbuiltin調べてこい 分かったらすいませんって言えよw
- 1010 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 16:29:57.11 ID:+M+pJ73c.net]
- >>1みろ
csh/tcshでのシェルスクリプトは*まったく推奨しません*。
- 1011 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 16:30:08.87 ID:0I+FrAtF.net]
- あーいつものマウントとらないと死ぬ病気のやつか
おだいじに
- 1012 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 16:30:30.62 ID:+M+pJ73c.net]
- >>1じゃなくて>>2だったな
> ・特記なき場合、POSIX 準拠の sh 可換シェルが既定です。(Bourne Shellは既にレガシーです)
- 1013 名前:デフォルトの名無しさん mailto:sage [2019/10/26(土) 16:30:49.43 ID:+M+pJ73c.net]
- >>998
マウント取られて可愛そうwww
- 1014 名前:1001 [Over 1000 Thread.net]
- このスレッドは1000を超えました。
新しいスレッドを立ててください。 life time: 76日 17時間 12分 59秒
- 1015 名前:1002 [Over 1000 Thread.net]
- 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。 ─────────────────── 《プレミアム会員の主な特典》 ★ 5ちゃんねる専用ブラウザからの広告除去 ★ 5ちゃんねるの過去ログを取得 ★ 書き込み規制の緩和 ─────────────────── 会員登録には個人情報は一切必要ありません。 月300円から匿名でご購入いただけます。 ▼ プレミアム会員登録はこちら ▼ https://premium.5ch.net/ ▼ 浪人ログイン
- 1016 名前:はこちら ▼
https://login.5ch.net/login.php [] - [ここ壊れてます]
- 1017 名前:過去ログ ★ [[過去ログ]]
- ■ このスレッドは過去ログ倉庫に格納されています
|

|