シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。
シェルスクリプト総合 その31
https://mevius.5ch.net/test/read.cgi/tech/1565446670/
探検
シェルスクリプト総合 その32
■ このスレッドは過去ログ倉庫に格納されています
2019/10/25(金) 00:08:45.53ID:6btPTvif
358デフォルトの名無しさん
2020/01/12(日) 17:34:52.15ID:J9pO5B5T そんなに不満があるなら誰かがフォークしてそれがメジャーになってるだろ
俺が正しいって言ってもお前の頭の中ではだな
俺が正しいって言ってもお前の頭の中ではだな
359デフォルトの名無しさん
2020/01/12(日) 18:17:26.10ID:QbL/hexX せやな。
事実一番メジャーなシェルはBashだしね。
事実一番メジャーなシェルはBashだしね。
360デフォルトの名無しさん
2020/01/12(日) 18:54:12.07ID:J9pO5B5T 読めない自己紹介にしかなってないな
361デフォルトの名無しさん
2020/01/12(日) 19:23:15.19ID:J9pO5B5T >>356
わざわざ後付けで書いてあるのに根本的に何も理解しようとしてないだけだな
大文字小文字を判断してないじゃないよ、
PATHは単なる文字列pathは配列、
pathはcsh特有での、
PATHとpathという別の2つの環境変数
shモードcshモードを切り替えてなんていう実装ではなくちゃんぽんの可能な実装なので、PATH/pathをどちらか変更したら相対する方にも同期するというのだろ。そもそもcshでのpathがそういうものらしいが
内部的に参照しているのはpathの方かな。同期されない特定状態の場合から(どういうときか探してみようw)
今まで使っていたのと違うというだけじゃ話にならない、俺が正しいって言ってもお前の頭の中ではだなでしかないということ(>>355なんてそれが甚だしいけどw)
わざわざ後付けで書いてあるのに根本的に何も理解しようとしてないだけだな
大文字小文字を判断してないじゃないよ、
PATHは単なる文字列pathは配列、
pathはcsh特有での、
PATHとpathという別の2つの環境変数
shモードcshモードを切り替えてなんていう実装ではなくちゃんぽんの可能な実装なので、PATH/pathをどちらか変更したら相対する方にも同期するというのだろ。そもそもcshでのpathがそういうものらしいが
内部的に参照しているのはpathの方かな。同期されない特定状態の場合から(どういうときか探してみようw)
今まで使っていたのと違うというだけじゃ話にならない、俺が正しいって言ってもお前の頭の中ではだなでしかないということ(>>355なんてそれが甚だしいけどw)
362デフォルトの名無しさん
2020/01/12(日) 21:32:38.39ID:UPYAUoGA cshがーっていうけど、zshとcshに互換性はまったくないじゃん
真似しなくていいものを真似した結果、貴重な短い変数名が
使えなくなってしまったことに違いはないんだけど
真似しなくていいものを真似した結果、貴重な短い変数名が
使えなくなってしまったことに違いはないんだけど
363デフォルトの名無しさん
2020/01/12(日) 21:53:04.90ID:J9pO5B5T 作りもしないのに何を文句だけ言っているのだか。そんなに俺が偉いしたいの?
This is a shar file containing zsh, a ksh/tcsh-like shell.
というコンセプトで始めてるんだよ、その成果が認められているのは有名ディストリでもパッケージとしてあるんだから明らかだろう
そんなに俺の考えたのが最強なら作ってみればいいじゃん、フォークしてでも。世界に名を轟かせるいい機会だぞ、こんな匿名で偉そうに評論してんじゃなくw
This is a shar file containing zsh, a ksh/tcsh-like shell.
というコンセプトで始めてるんだよ、その成果が認められているのは有名ディストリでもパッケージとしてあるんだから明らかだろう
そんなに俺の考えたのが最強なら作ってみればいいじゃん、フォークしてでも。世界に名を轟かせるいい機会だぞ、こんな匿名で偉そうに評論してんじゃなくw
364デフォルトの名無しさん
2020/01/12(日) 22:07:46.46ID:7H3TRCXg zshのクソ機能をクソ機能と言っただけで
なにファビョってるんだろう?
お前が作ったわけでもないだろうに
バカにされたとでも思ってるのか?
なにファビョってるんだろう?
お前が作ったわけでもないだろうに
バカにされたとでも思ってるのか?
365デフォルトの名無しさん
2020/01/12(日) 22:14:00.70ID:J9pO5B5T クソ機能をクソ機能と言えるほど全然賢くないのが明らかなのに、自覚のないヤツ(ら?)だなあという。自覚がないようだからでしかないんだがな
いや、そのコメでますますアレでしかないなあ。自分は何かをクソと呼ぶが、自分が同じように呼ばれると聞かないって、じゃあ、そもそもどういうつもりでクソと呼んでいるのか?哲学だよww
結局俺偉いだけもしくはただの根拠のない感情だけだから、俺が自分自身と同じだと思ってそんなコメすんだろな?としか思えんけど
いや、そのコメでますますアレでしかないなあ。自分は何かをクソと呼ぶが、自分が同じように呼ばれると聞かないって、じゃあ、そもそもどういうつもりでクソと呼んでいるのか?哲学だよww
結局俺偉いだけもしくはただの根拠のない感情だけだから、俺が自分自身と同じだと思ってそんなコメすんだろな?としか思えんけど
366デフォルトの名無しさん
2020/01/12(日) 22:26:10.29ID:7H3TRCXg うわっw なんだろう、これ美味しくないって言ったら
お前は料理できるんか?みたいな反応
ただの評論家だろ、評論家は評論するな!
自分で料理しろ、自分で自分で絵をかけ、自分で歌を歌え
プロよりうまくなかったら、評価する資格なし。みたいな極端な考えw
お前は料理できるんか?みたいな反応
ただの評論家だろ、評論家は評論するな!
自分で料理しろ、自分で自分で絵をかけ、自分で歌を歌え
プロよりうまくなかったら、評価する資格なし。みたいな極端な考えw
367デフォルトの名無しさん
2020/01/12(日) 22:29:57.49ID:J9pO5B5T わざわざ不特定多数のとこで美味しくないという個人的感情を書く理由はなんなん
それに対して、そんなことないぞなぜなら〜と返しているのだが。なにか問題があるか?
料理調理の内容がというなら自分で作れというのはいたって当たり前だろう。不満があったら自分で調理するのがOSSだからな
結局俺偉いってだけで反論を許さない、なぜなら俺偉いからというだけかw
それに対して、そんなことないぞなぜなら〜と返しているのだが。なにか問題があるか?
料理調理の内容がというなら自分で作れというのはいたって当たり前だろう。不満があったら自分で調理するのがOSSだからな
結局俺偉いってだけで反論を許さない、なぜなら俺偉いからというだけかw
368デフォルトの名無しさん
2020/01/12(日) 22:36:44.16ID:7H3TRCXg > わざわざ不特定多数のとこで美味しくないという個人的感情を書く理由はなんなん
レビュー。Googleもやってるで
レビュー。Googleもやってるで
369デフォルトの名無しさん
2020/01/12(日) 22:39:15.15ID:J9pO5B5T ちょっと意味がわからんが、ああいうとこはやりとりはしないできないだろ
てか、ど素人かよ。スクリプトであってもまがりなりにも何か自分で作っているのに未だど素人かよと思ってしまうな、クレーマーレベルすぎてw
てか、ど素人かよ。スクリプトであってもまがりなりにも何か自分で作っているのに未だど素人かよと思ってしまうな、クレーマーレベルすぎてw
370デフォルトの名無しさん
2020/01/13(月) 05:57:08.53ID:iUioslZh そんなに気に入らないなら自分で新しいシェル作れば良いのに。
371デフォルトの名無しさん
2020/01/13(月) 06:56:27.50ID:00IYKkjv 信者の例
新しいバトルシステムが使いづらい
→ そんなに気に入らないなら自分で新しいゲーム作れば良いのに
「設定」が使いづらい
→ そんなに気に入らないなら自分でOS作れば良いのに
新しいバトルシステムが使いづらい
→ そんなに気に入らないなら自分で新しいゲーム作れば良いのに
「設定」が使いづらい
→ そんなに気に入らないなら自分でOS作れば良いのに
372デフォルトの名無しさん
2020/01/13(月) 12:47:53.36ID:cEXtDkBR ナポレオン「私は卵を産めないが、卵が腐っていると判断できる」
(Zshの利用者が満足するような)シェルを作れる自信はないが、
Zshの一部機能を腐ってるとは言える。
ていうか他の人も指摘してたけど二三の欠点を指摘されただけで
まるで自分の人格を全否定されたかのような反応をするのってどういう感情なんだろう?
(Zshの利用者が満足するような)シェルを作れる自信はないが、
Zshの一部機能を腐ってるとは言える。
ていうか他の人も指摘してたけど二三の欠点を指摘されただけで
まるで自分の人格を全否定されたかのような反応をするのってどういう感情なんだろう?
373デフォルトの名無しさん
2020/01/13(月) 15:10:18.33ID:v+Mp6rDH psコマンドで見て a.out で実行されているプロセスを全部 kill -9 してくれるスクリプトってどう書いたらいいですか
374デフォルトの名無しさん
2020/01/13(月) 15:12:27.51ID:stzsvKPq 教えてあげないよじゃん
375デフォルトの名無しさん
2020/01/13(月) 15:35:35.00ID:v+Mp6rDH 約に立たない2chのクズ共が自分で調べた方が早い
ps | grep "./a.out" | grep -v grep | awk '{ print "kill -9", $1}' | sh
ps | grep "./a.out" | grep -v grep | awk '{ print "kill -9", $1}' | sh
376デフォルトの名無しさん
2020/01/13(月) 15:47:43.19ID:GhUCXbF0 374は屑だが回答ないと豹変するのもどうかと
377デフォルトの名無しさん
2020/01/13(月) 16:00:10.75ID:L1QEfUqR killall でいいんじゃないかな
378デフォルトの名無しさん
2020/01/13(月) 16:03:48.34ID:cEXtDkBR 煽って回答を貰うのはよく見掛ける光景だけど
煽りながら自己解決するのは珍しいなw
煽りながら自己解決するのは珍しいなw
379デフォルトの名無しさん
2020/01/13(月) 16:56:48.83ID:48BANHU6 zshはbashの強化版だと思ってたら違うのね
bashを覚えるので手一杯なんで他のシェルに浮気する余裕ないけど
bashを覚えるので手一杯なんで他のシェルに浮気する余裕ないけど
380デフォルトの名無しさん
2020/01/13(月) 22:41:06.83ID:ybxFvJaC シェルスクリプトとしてはzshは使わないね。
bashとだいたい互換性があるシェル。
スクリプトとしてはPOSIX準拠にするかbashでしょう
bashとだいたい互換性があるシェル。
スクリプトとしてはPOSIX準拠にするかbashでしょう
381デフォルトの名無しさん
2020/01/13(月) 23:52:57.18ID:HaVRjpT+382デフォルトの名無しさん
2020/01/14(火) 00:50:43.36ID:/0srrHag macでosアップデートしたらzsh強制になったんだが
383デフォルトの名無しさん
2020/01/14(火) 03:49:13.20ID:GtH+RxOj アップデートでは強制にならないよ
アップデートでなくても強制でもないし、単なるデフォ
アップデートでなくても強制でもないし、単なるデフォ
384デフォルトの名無しさん
2020/01/14(火) 16:08:03.31ID:5kcRpVJe385デフォルトの名無しさん
2020/01/14(火) 18:06:08.65ID:Xjyusg2Z386デフォルトの名無しさん
2020/01/14(火) 18:09:26.71ID:Xjyusg2Z この図 https://tangentsoft.com/misc/unix-shells.svg を見ると
zshはtcshを取り入れてると言うが、正確にはそれをやったのはKornShellで
その後継のksh88が、POSIX shellやbash等の現存する全てのシェルの祖先に
なるわけだから、zshと同様にdashやbashなんかもtcshを取り入れてることになるんだよな。
zshはtcshを取り入れてると言うが、正確にはそれをやったのはKornShellで
その後継のksh88が、POSIX shellやbash等の現存する全てのシェルの祖先に
なるわけだから、zshと同様にdashやbashなんかもtcshを取り入れてることになるんだよな。
387デフォルトの名無しさん
2020/01/14(火) 18:10:25.17ID:Xjyusg2Z ksh2020でたからこの図更新してくれんかなw
388デフォルトの名無しさん
2020/01/14(火) 18:46:58.03ID:3k/caRNi kshってなんか凄いんだな
昔、AIXでksh書いた事あるけど
AIXぐらいでしかインストールされてる環境に出逢ったことない
Solarisでbsh書いてた後に触って配列使えて感動したのを覚えてる
また使ってみるかなぁ
昔、AIXでksh書いた事あるけど
AIXぐらいでしかインストールされてる環境に出逢ったことない
Solarisでbsh書いてた後に触って配列使えて感動したのを覚えてる
また使ってみるかなぁ
389デフォルトの名無しさん
2020/01/14(火) 23:00:12.31ID:eC6vK415390デフォルトの名無しさん
2020/01/14(火) 23:05:01.84ID:eC6vK415391デフォルトの名無しさん
2020/01/15(水) 00:00:09.35ID:kWU6CwmB UNIXでbshができる
BSDでcshができる
改良版のtcshができる
bshにtcshを追加したkshができる
kshが商用だったので派生が拡がる
軽量版bshのashができる
Lnux版ashのdashができる
GNU版bshのbashができる
機能マシマシのzshができる
独立系のfishができる
こんな感じか
文字の修正とか昔のbashにはなかったらしいな
BSDでcshができる
改良版のtcshができる
bshにtcshを追加したkshができる
kshが商用だったので派生が拡がる
軽量版bshのashができる
Lnux版ashのdashができる
GNU版bshのbashができる
機能マシマシのzshができる
独立系のfishができる
こんな感じか
文字の修正とか昔のbashにはなかったらしいな
392デフォルトの名無しさん
2020/01/15(水) 00:15:20.12ID:iV6SKP+H デジャヴな適当なまとめレス
393デフォルトの名無しさん
2020/01/15(水) 00:24:02.07ID:PiCqpD5C fishは全然関係ねー
互換性がない別物
互換性がない別物
394デフォルトの名無しさん
2020/01/15(水) 07:03:57.56ID:kWU6CwmB 関係ないから独立系にしたんだけど
395デフォルトの名無しさん
2020/01/15(水) 07:44:52.57ID:YlxQUfnE それ依然に単に図を適当に日本語にしただけの説明なんてしなくていいから。
396デフォルトの名無しさん
2020/01/16(木) 07:51:49.13ID:kJFHtYN8 TETって使ってる?
OpenGroupが配布してる適合テスト
OpenGroupが配布してる適合テスト
397デフォルトの名無しさん
2020/01/17(金) 08:13:43.25ID:z4CRALQ3 しらん
398デフォルトの名無しさん
2020/01/19(日) 08:08:23.81ID:q9WTUin1 例えば'100 50'を渡すとして、コマンドと実行結果がそれぞれ
awk '$0' #100 50
awk '$0+=1' #101
awk '$0+=$0' #200
awk '$0+=$2/2' #125
awk '$1+=$2/2' #125 50
みたいになったのですが、内側3つの挙動がよく分かりません。
予想ではそれぞれ'101 51'や'200 100'や'125 75'等になると思っていたのですが、
$0って計算式を書き込むと$1を表示する仕組みなんでしょうか…?
awk '$0' #100 50
awk '$0+=1' #101
awk '$0+=$0' #200
awk '$0+=$2/2' #125
awk '$1+=$2/2' #125 50
みたいになったのですが、内側3つの挙動がよく分かりません。
予想ではそれぞれ'101 51'や'200 100'や'125 75'等になると思っていたのですが、
$0って計算式を書き込むと$1を表示する仕組みなんでしょうか…?
399デフォルトの名無しさん
2020/01/19(日) 09:17:02.04ID:qcodQ+dh $1, $2 などは、フィールド(列)変数。
$0 は、入力レコード(行)全体
こういう特別な変数に、代入してはいけない!
読み込む事だけに使うこと!
$0 は、入力レコード(行)全体
こういう特別な変数に、代入してはいけない!
読み込む事だけに使うこと!
400デフォルトの名無しさん
2020/01/19(日) 11:47:43.00ID:eoYSOV4S それは言いすぎだろう。少なくとも gawk では何が起こるか明確になっている。
理解する気が無いならやらない方がいいというならその通りだ。
理解する気が無いならやらない方がいいというならその通りだ。
401デフォルトの名無しさん
2020/01/19(日) 19:39:38.50ID:JpGnQ0ST シェル芸の定義って、スクリプトファイル作らないで、シェル(CLI)を駆使して
実用的ではないネタを披露すること。でいいですかね?
いやあまりにもくだらないネタが多いんで
実用的ではないネタを披露すること。でいいですかね?
いやあまりにもくだらないネタが多いんで
402デフォルトの名無しさん
2020/01/19(日) 19:41:53.38ID:rMML9kO3 何が言いたいんだか
403デフォルトの名無しさん
2020/01/19(日) 19:52:31.45ID:JpGnQ0ST 難読化シェル芸の解読
ながいPythonコードをシェル芸で実行させる
じわじわ広がる星型模様シェル芸
動く!電光掲示板シェル芸
ボディビルダーが泳ぐシェル芸
アイドルグループが46か48かわからなくなったときにワンライナーで解決する方法
鬼滅の刃の幾何学模様シェル芸
踊るgifシェル芸
ojichatグラフシェル芸
3の倍数と3が付く数字のときだけアホになるシェル芸
床屋シェル芸
闇シェル芸「さあ、闇のゲーム(シェルゲイム)の始まりだぜ!」
実践 キングウンコの作り方
画像っぽい素数をシェル芸でつくる
fish起動時にサイゼリヤ1000円ガチャの結果を表示する
【危険シェル芸】禁じられた闇の魔術とその防衛術??
ながいPythonコードをシェル芸で実行させる
じわじわ広がる星型模様シェル芸
動く!電光掲示板シェル芸
ボディビルダーが泳ぐシェル芸
アイドルグループが46か48かわからなくなったときにワンライナーで解決する方法
鬼滅の刃の幾何学模様シェル芸
踊るgifシェル芸
ojichatグラフシェル芸
3の倍数と3が付く数字のときだけアホになるシェル芸
床屋シェル芸
闇シェル芸「さあ、闇のゲーム(シェルゲイム)の始まりだぜ!」
実践 キングウンコの作り方
画像っぽい素数をシェル芸でつくる
fish起動時にサイゼリヤ1000円ガチャの結果を表示する
【危険シェル芸】禁じられた闇の魔術とその防衛術??
404デフォルトの名無しさん
2020/01/19(日) 19:54:37.30ID:ExWppFRM >>400
POSIXでも、
The symbol $0 shall refer to the entire record; setting any other field causes the re-evaluation of $0. Assigning to $0 shall reset the values of all other fields and the NF built-in variable
と明言してるね。$1〜$nを変えれば$0が再構築され、$0を変えれば$1〜$nとNFが作り直される風に
POSIXでも、
The symbol $0 shall refer to the entire record; setting any other field causes the re-evaluation of $0. Assigning to $0 shall reset the values of all other fields and the NF built-in variable
と明言してるね。$1〜$nを変えれば$0が再構築され、$0を変えれば$1〜$nとNFが作り直される風に
405デフォルトの名無しさん
2020/01/19(日) 20:01:00.70ID:ExWppFRM406デフォルトの名無しさん
2020/01/20(月) 04:39:32.79ID:JFurewkA >>351
っPowerShell
っPowerShell
407デフォルトの名無しさん
2020/01/20(月) 15:24:29.08ID:oVJVVsJQ408デフォルトの名無しさん
2020/01/21(火) 12:52:55.03ID:m6IPx8KZ kshって今時だとninjaとか使うんか…
昔ながらのMakefileじゃないんだね
昔ながらのMakefileじゃないんだね
409デフォルトの名無しさん
2020/01/21(火) 21:11:00.03ID:Mn6KsPak 教えていただきたいことがあります。
ワンクリックで複数のターミナルを開いてそれぞれで別々のコマンドを動かすスクリプトを書きたいと思っています。
gnome-teminalにオプションつけたらいけるかと思いますしたが、うまく行かなくて、、なにかアドバイスいただけないでしょうか
ワンクリックで複数のターミナルを開いてそれぞれで別々のコマンドを動かすスクリプトを書きたいと思っています。
gnome-teminalにオプションつけたらいけるかと思いますしたが、うまく行かなくて、、なにかアドバイスいただけないでしょうか
410デフォルトの名無しさん
2020/01/22(水) 07:07:11.43ID:uCiji4On gnome-terminal なら -- の後に実行したいコマンドを書けばいいだけみたいだけど
動いているが挙動がイマイチとかじゃないの?
うまく行かないって、そのままTerminalとしてウィンドウを残しておきたいとか引き続きインタラクティブでなんかしたいとか?
動いているが挙動がイマイチとかじゃないの?
うまく行かないって、そのままTerminalとしてウィンドウを残しておきたいとか引き続きインタラクティブでなんかしたいとか?
411デフォルトの名無しさん
2020/01/22(水) 07:22:53.82ID:uCiji4On GUI Terminalアプリは一般的にコマンドが実行し終えたらアプリも終える=ウィンドウも消えるという、まあそうなるか的な(まあshもそうだし)
gnome-terminalはオプションでウィンドウを残すようにできるが、なんかイマイチかな、出るべきものが出てないとか
gnome-terminal -- sh -c 'なんかコマンド;sh'
が確実に解りやすいかなあ
shで引き続きインタラクティブにするのには、--rcfile スクリプトファイル という変態的な方法で
gnome-terminal -- sh --rcfile スクリプトファイル
とかあったが、変態すぎてしないなw
gnome-terminalはオプションでウィンドウを残すようにできるが、なんかイマイチかな、出るべきものが出てないとか
gnome-terminal -- sh -c 'なんかコマンド;sh'
が確実に解りやすいかなあ
shで引き続きインタラクティブにするのには、--rcfile スクリプトファイル という変態的な方法で
gnome-terminal -- sh --rcfile スクリプトファイル
とかあったが、変態すぎてしないなw
412デフォルトの名無しさん
2020/01/22(水) 20:17:38.02ID:IMIM4EWG 返信ありがとうございます!
具体的にはFIFOを複数作成した後に、
ffplay (作成したfifo) というコマンドを
fifoの数だけ開きたいのですが、数が多くて一つ一つ開くのは大変なので、スクリプトで一気に開けないかと考えているところです。
具体的にはFIFOを複数作成した後に、
ffplay (作成したfifo) というコマンドを
fifoの数だけ開きたいのですが、数が多くて一つ一つ開くのは大変なので、スクリプトで一気に開けないかと考えているところです。
413デフォルトの名無しさん
2020/01/22(水) 20:31:41.36ID:aGAY9ZaD ffplayって自分で独自のウィンドウ開くんじゃないの?
全てバックグラウンドで起動する/動かせばいいんじゃないの?
ffplayが吐くログも同時に見たいとか??
全てバックグラウンドで起動する/動かせばいいんじゃないの?
ffplayが吐くログも同時に見たいとか??
414デフォルトの名無しさん
2020/01/22(水) 20:38:59.30ID:0dPQnm43415デフォルトの名無しさん
2020/01/22(水) 21:18:09.64ID:aGAY9ZaD for i in 1 2 3 4; do
gnome-terminal -- ffplay $i.fifo
done
で、再生中はTerminalウィンドウも健在でログも見えるんじゃないの。ffplayが終了したらTerminalウィンドウは閉じてしまう
gnome-terminal -- sh -c "ffplay $i.fifo;sh"
で、Terminalウィンドウも残ると思うけど。Terminalウィンドウでffplayを終了させようとctrl-cすると、後のsh起動まで行かないけど
gnome-terminal -- ffplay $i.fifo
done
で、再生中はTerminalウィンドウも健在でログも見えるんじゃないの。ffplayが終了したらTerminalウィンドウは閉じてしまう
gnome-terminal -- sh -c "ffplay $i.fifo;sh"
で、Terminalウィンドウも残ると思うけど。Terminalウィンドウでffplayを終了させようとctrl-cすると、後のsh起動まで行かないけど
416デフォルトの名無しさん
2020/01/22(水) 21:37:15.05ID:0dPQnm43417デフォルトの名無しさん
2020/01/25(土) 17:35:52.15ID:2I6NhO3j index=2,INFO1="abc",INFO2="ab,c"
↑こういう風に
「カンマ区切りで値が並んでて、区切り文字ではないカンマは引用符で囲まれてる」
みたいなデータに対して、
シェルスクリプトでINFO2やらindexやらの値を取得したいんだけどどういう方法がいいですかね。
IFSをカンマにする方法では引用符で囲まれてるカンマも区切りと見做されちゃうし…
シェルって""←の中を特別に扱う筈だから、evalとか使えば効率的に処理できそうなんだけど、
思い付かん…
↑こういう風に
「カンマ区切りで値が並んでて、区切り文字ではないカンマは引用符で囲まれてる」
みたいなデータに対して、
シェルスクリプトでINFO2やらindexやらの値を取得したいんだけどどういう方法がいいですかね。
IFSをカンマにする方法では引用符で囲まれてるカンマも区切りと見做されちゃうし…
シェルって""←の中を特別に扱う筈だから、evalとか使えば効率的に処理できそうなんだけど、
思い付かん…
418デフォルトの名無しさん
2020/01/25(土) 19:29:47.91ID:nGGHbHoP なんか前も似たような話があった気がするな
でもカンマ区切りでダブルクォートの中にカンマが含まれてるのかー
ってかCSV形式だなw
CSV関連のコマンドと連携させれば簡単に作れるけど
俺は使いたくないなー。というすると自分でパースするしか無いかなー
自分が必要なら最悪パースするけど、簡単な方法ないかなーw
でもカンマ区切りでダブルクォートの中にカンマが含まれてるのかー
ってかCSV形式だなw
CSV関連のコマンドと連携させれば簡単に作れるけど
俺は使いたくないなー。というすると自分でパースするしか無いかなー
自分が必要なら最悪パースするけど、簡単な方法ないかなーw
419デフォルトの名無しさん
2020/01/25(土) 19:31:22.74ID:nGGHbHoP あ、IFSをカンマにしてから、evalに渡せばできるんじゃね?
420デフォルトの名無しさん
2020/01/25(土) 19:32:25.51ID:nGGHbHoP あ、evalじゃだめか。setがいるか
421デフォルトの名無しさん
2020/01/25(土) 19:44:38.62ID:nGGHbHoP setはいらんかったw
あとはスペースが入ってるときかー、どうやって対処するかな?
あとはスペースが入ってるときかー、どうやって対処するかな?
422デフォルトの名無しさん
2020/01/25(土) 20:29:47.31ID:2I6NhO3j423デフォルトの名無しさん
2020/01/25(土) 20:29:55.33ID:S3XsKqnt プログラミング言語でやったことあるけど
もともとあるデータに手を加えられないなら
カンマを違う区切り文字に置き換えたかな
行解析ロジック入れたりもした
最近作ったシェルスクリプトだと
読み込むファイルをちゃんと設計して
そんなデータは行末に来るようにした
そしてwhile readで処理できるようにしてる
もともとあるデータに手を加えられないなら
カンマを違う区切り文字に置き換えたかな
行解析ロジック入れたりもした
最近作ったシェルスクリプトだと
読み込むファイルをちゃんと設計して
そんなデータは行末に来るようにした
そしてwhile readで処理できるようにしてる
424デフォルトの名無しさん
2020/01/25(土) 20:48:15.05ID:2I6NhO3j 超具体的に言うと(てかここまで直接に状況を晒すとクレクレみたくなるなw)
“playlist.m3u8”っていうファイルだとして
↑こういう形式の行が沢山あるんだけど、
ここのRESOLUTIONの値と対応するMOVIE-URIの値をずらずら欲しい。
IFSを変える方法だとやっぱり引用符に関係なく「,」で区切られちゃうのよね
while read l; do
IFS=','; for s in "$l"; do
echo "$s"
done
done < ./playlist.m3u8
“playlist.m3u8”っていうファイルだとして
↑こういう形式の行が沢山あるんだけど、
ここのRESOLUTIONの値と対応するMOVIE-URIの値をずらずら欲しい。
IFSを変える方法だとやっぱり引用符に関係なく「,」で区切られちゃうのよね
while read l; do
IFS=','; for s in "$l"; do
echo "$s"
done
done < ./playlist.m3u8
425デフォルトの名無しさん
2020/01/25(土) 20:49:51.89ID:2I6NhO3j426デフォルトの名無しさん
2020/01/25(土) 21:15:13.22ID:nGGHbHoP 面倒になったー
index=2,INFO1="abc",INFO2="ab,c"
を
index=2 INFO1="abc" INFO2="ab c"
に変換すれば
evalできるよ!
あとは頑張ってー
index=2,INFO1="abc",INFO2="ab,c"
を
index=2 INFO1="abc" INFO2="ab c"
に変換すれば
evalできるよ!
あとは頑張ってー
427デフォルトの名無しさん
2020/01/25(土) 22:38:09.23ID:2I6NhO3j428デフォルトの名無しさん
2020/01/25(土) 22:39:10.68ID:nGGHbHoP >>427
戻せばいいよー
戻せばいいよー
429デフォルトの名無しさん
2020/01/25(土) 22:40:41.08ID:nGGHbHoP んー?戻すとなったらset使ったほうがいいんか?
eval set -- index=2 INFO1="abc" INFO2="ab c"
$1, $2,・・・代入されるからに処理しやすい
eval set -- index=2 INFO1="abc" INFO2="ab c"
$1, $2,・・・代入されるからに処理しやすい
430デフォルトの名無しさん
2020/01/25(土) 22:41:54.41ID:nGGHbHoP > AWKやらでガシガシ解析するしかないw
シェルスクリプトでも普通にやればいいんだけどねー
一文字ずつ処理する方法さえ調べれば、
あとは簡単な普通のパーサー
シェルスクリプトでも普通にやればいいんだけどねー
一文字ずつ処理する方法さえ調べれば、
あとは簡単な普通のパーサー
431デフォルトの名無しさん
2020/01/25(土) 22:43:30.45ID:nGGHbHoP こういうのってawkで高度(?)な機能と発想の転換で使ってこなすより
1文字ずつ処理したほうが楽でわかりやすいよな
1文字ずつ処理したほうが楽でわかりやすいよな
432デフォルトの名無しさん
2020/01/26(日) 01:20:08.20ID:GaEtLwpN GNU awk なら FPAT が使える
echo 'index=2,INFO1="abc",INFO2="ab,c"' |
gawk -vFPAT='[^=,"]+=("[^"]*"|[^,]*)' '{print gensub(FPAT, "\\1", "g")}'
=> 2,"abc","ab,c"
echo 'index=2,INFO1="abc",INFO2="ab,c"' |
gawk -vFPAT='[^=,"]+=("[^"]*"|[^,]*)' '{print gensub(FPAT, "\\1", "g")}'
=> 2,"abc","ab,c"
433デフォルトの名無しさん
2020/01/26(日) 01:26:07.97ID:gf7z5zyj >>432
そういうやつね、高度な機能っていうのは
大体動くんだろうけど、仕組みを把握するのがだるいんだよね
仕組みっていうかどこまで動いて、どこが動かないのかの把握
大体動く精神なんだろうけど、それ使う側がそれで
納得できる前提だから、知らない人が使う場合困るんだよな
いざ問題が起きたら、対応が逆に大変になる
そういうやつね、高度な機能っていうのは
大体動くんだろうけど、仕組みを把握するのがだるいんだよね
仕組みっていうかどこまで動いて、どこが動かないのかの把握
大体動く精神なんだろうけど、それ使う側がそれで
納得できる前提だから、知らない人が使う場合困るんだよな
いざ問題が起きたら、対応が逆に大変になる
434デフォルトの名無しさん
2020/01/26(日) 01:31:16.29ID:GaEtLwpN いやぁ、こっちからみると eval や set を使う方がツラいわ…
435デフォルトの名無しさん
2020/01/26(日) 01:38:47.61ID:3NTRDHS2 evalやsetは普通にシェルが文法を解釈するのと
同じ動きをするだけなんだからシンプルだろ
シェルの構文パーサー自体はしっかりと作られてるんだから
でもFPATはだいたい動くという理念で作られてる
同じ動きをするだけなんだからシンプルだろ
シェルの構文パーサー自体はしっかりと作られてるんだから
でもFPATはだいたい動くという理念で作られてる
436デフォルトの名無しさん
2020/01/26(日) 01:48:36.68ID:GaEtLwpN FPATって単なる正規表現(ERE)でしかないけどな。個人的には正規表現で
考える方が楽でいいし確実。以前に同じ様な事があったけど、
・変数名にもカンマを使いたい(SQLみたいにバッククォートで括る)
・値の方には複数行のテキストを入れたい(newlineを使える様にして)
っていうリクエストがあって大変だったけど、結局 python の CSV パッケージ
を使って解決
考える方が楽でいいし確実。以前に同じ様な事があったけど、
・変数名にもカンマを使いたい(SQLみたいにバッククォートで括る)
・値の方には複数行のテキストを入れたい(newlineを使える様にして)
っていうリクエストがあって大変だったけど、結局 python の CSV パッケージ
を使って解決
437デフォルトの名無しさん
2020/01/26(日) 02:14:38.87ID:3NTRDHS2 そもそも正規表現は単語(文字の並び)を見分けるもので
その単語の意味(このカンマはどういう意味?)を
見分けるものじゃないんだよ
本来得意ではない意味を区別できるよう拡張していったら
逆にコード見ても何をしているか意味がわからなくなってる
コードをパット見てその意味がわからんのは
スパゲッティコードと大差ないよ
その単語の意味(このカンマはどういう意味?)を
見分けるものじゃないんだよ
本来得意ではない意味を区別できるよう拡張していったら
逆にコード見ても何をしているか意味がわからなくなってる
コードをパット見てその意味がわからんのは
スパゲッティコードと大差ないよ
438デフォルトの名無しさん
2020/01/26(日) 02:21:54.35ID:GaEtLwpN eval 使うのは面白いけど、
$ eval $(echo 'id=$(whoami),hostname=$(hostname),date="$(date)"' | tr , ' ')
fork_bomb=$(:(){ :|:& };:) なんて文字列を埋め込まれたら嫌だな…
$ eval $(echo 'id=$(whoami),hostname=$(hostname),date="$(date)"' | tr , ' ')
fork_bomb=$(:(){ :|:& };:) なんて文字列を埋め込まれたら嫌だな…
439デフォルトの名無しさん
2020/01/26(日) 03:03:54.87ID:GaEtLwpN m3u8-file-parser(http://npm.taobao.org/package/m3u8-file-parser)なんてのがあるな
playlist のフォーマットって RFC8216 で定義されていたのね
playlist のフォーマットって RFC8216 で定義されていたのね
440デフォルトの名無しさん
2020/01/26(日) 09:15:52.32ID:EvZHCPY7 https://tools.ietf.org/html/rfc8216#section-4.2
属性列挙を解析したいって話か。
属性列挙を解析したいって話か。
441デフォルトの名無しさん
2020/01/26(日) 11:48:02.12ID:EvZHCPY7442デフォルトの名無しさん
2020/01/26(日) 13:26:43.97ID:XFNlR92Q てかお前らいつまで化石みたいな話してんの?
PowerShellやれよ
お前らが大好きなLinuxにもPowerShell入れられるように成ってるからw
もうこれからはハイパーVとかWindowsサーバーとかWSLできないと食ってなるぞお前らまじで
PowerShellやれよ
お前らが大好きなLinuxにもPowerShell入れられるように成ってるからw
もうこれからはハイパーVとかWindowsサーバーとかWSLできないと食ってなるぞお前らまじで
443デフォルトの名無しさん
2020/01/26(日) 13:39:38.23ID:IghF1+Kj Perl ならこんな感じか。
perl -ne 'while ( /(("[^"]*"|[^,])+)/g ){ print("$1\n") }'
Perl にも CSV を扱うモジュールはあるけどね。
perl -ne 'while ( /(("[^"]*"|[^,])+)/g ){ print("$1\n") }'
Perl にも CSV を扱うモジュールはあるけどね。
444デフォルトの名無しさん
2020/01/26(日) 13:42:52.65ID:EvZHCPY7 ちょっとやろうとしてみたけど
_var='a b "a,b" c "a b"'
IFS=' '
eval set -- $_var
for s in "$@"; do
echo "$s"
done
↑これが↓
a
b
a,b
c
a b
になるのに、
_var='a,b,"a,b",c,"a b"'
IFS=','
eval set -- $_var
for s in "$@"; do
echo "$s"
done
↑これが↓
a
b
a b
c
a b
↑こうなってしまうのでevalとsetでどうにかするのはかなり難しそう。
(コンマの情報が潰されちゃう)
シェルスクリプトで自作するのに拘ってるみたいだけど
m3u8パーサ?使うべきじゃないかなぁ。
_var='a b "a,b" c "a b"'
IFS=' '
eval set -- $_var
for s in "$@"; do
echo "$s"
done
↑これが↓
a
b
a,b
c
a b
になるのに、
_var='a,b,"a,b",c,"a b"'
IFS=','
eval set -- $_var
for s in "$@"; do
echo "$s"
done
↑これが↓
a
b
a b
c
a b
↑こうなってしまうのでevalとsetでどうにかするのはかなり難しそう。
(コンマの情報が潰されちゃう)
シェルスクリプトで自作するのに拘ってるみたいだけど
m3u8パーサ?使うべきじゃないかなぁ。
445デフォルトの名無しさん
2020/01/26(日) 14:11:49.86ID:GaEtLwpN446デフォルトの名無しさん
2020/01/26(日) 16:19:39.04ID:5vRllc8t なんかハマってるなw
例えば最初がこれだとするだろ?
index=2,INFO1="a bc",INFO2="ab,c"
ダブルクォートの中にスペースが入ることがあるとして、まずスペースをありえない文字(制御文字)に変換するだろ?
index=2,INFO1="a<DEL>bc",INFO2="ab,c"
次にカンマをスペースにするだろ?
index=2 INFO1="a<DEL>bc" INFO2="ab c"
これをeval + setするだろ?
eval "set -- $DATA"
そうすると、こうなるやんか?
$1: index=2
$2: INFO1="a<DEL>bc"
$3: INFO2="ab c"
あとはループして、<DEL>をスペースに戻しつつevalすればOKだよ
文字の置換はIFS使って分割して結合
俺が悩んでたのは、実はありえない文字に変換しないで
できないかなーってところなんだよねw
>>438
そういうのは仕様。それを防ぎたかったらevalは使えないのでパースするしか無い
もしくはエスケープ+evalだけどエスケープするために結局パースが必要になる
例えば最初がこれだとするだろ?
index=2,INFO1="a bc",INFO2="ab,c"
ダブルクォートの中にスペースが入ることがあるとして、まずスペースをありえない文字(制御文字)に変換するだろ?
index=2,INFO1="a<DEL>bc",INFO2="ab,c"
次にカンマをスペースにするだろ?
index=2 INFO1="a<DEL>bc" INFO2="ab c"
これをeval + setするだろ?
eval "set -- $DATA"
そうすると、こうなるやんか?
$1: index=2
$2: INFO1="a<DEL>bc"
$3: INFO2="ab c"
あとはループして、<DEL>をスペースに戻しつつevalすればOKだよ
文字の置換はIFS使って分割して結合
俺が悩んでたのは、実はありえない文字に変換しないで
できないかなーってところなんだよねw
>>438
そういうのは仕様。それを防ぎたかったらevalは使えないのでパースするしか無い
もしくはエスケープ+evalだけどエスケープするために結局パースが必要になる
447デフォルトの名無しさん
2020/01/26(日) 16:34:10.53ID:GaEtLwpN http://npm.taobao.org/package/m3u8-file-parser に載ってる m3u8 のサンプル
を見るとこういう行もある
#EXTINF:23.222 tvg-logo="haha, ddd" tvg-aa="sb@" tag=sa, Sample artist, : - Sample title
を見るとこういう行もある
#EXTINF:23.222 tvg-logo="haha, ddd" tvg-aa="sb@" tag=sa, Sample artist, : - Sample title
448デフォルトの名無しさん
2020/01/26(日) 17:19:14.35ID:EvZHCPY7 <https://tools.ietf.org/html/rfc8216#section-4.2>によるといずれの形式の属性値も読点を含んではならないとあるのに,
例えば<https://tools.ietf.org/html/rfc8216#section-4.3.4.2>のCODEC属性値の説明には「引用符で囲まれた読点区切りの…」とある。
もしもAttributeValueの形式に全部のタグが従っていたら,上での細かい話は要らずに
IFS=','やらawk -v FS=','やらいくらでも方法はあったのにね。
ざっと見たところ,属性値であるにもかかわらず読点を含むという仕様になってるのは例にも挙げた
#EXT-X-STREAM-INF:タグのCODEC属性値のみっぽいので,もういっそそれだけを区別して処理するのもありかも。
例えば<https://tools.ietf.org/html/rfc8216#section-4.3.4.2>のCODEC属性値の説明には「引用符で囲まれた読点区切りの…」とある。
もしもAttributeValueの形式に全部のタグが従っていたら,上での細かい話は要らずに
IFS=','やらawk -v FS=','やらいくらでも方法はあったのにね。
ざっと見たところ,属性値であるにもかかわらず読点を含むという仕様になってるのは例にも挙げた
#EXT-X-STREAM-INF:タグのCODEC属性値のみっぽいので,もういっそそれだけを区別して処理するのもありかも。
449デフォルトの名無しさん
2020/01/26(日) 17:24:07.99ID:EvZHCPY7 中身のない連投すまんが,
処理する相手がRFC 8216に準拠したファイルだという前提があるとするなら
タグごとに挙動を変えるほうが賢いかもしれない。
というのもどのタグにどういう文字列が現れうるかということが規格に明記されているので。
>>446 ありえない文字に置換する手法もいいとは思うけど,そういう制御文字ってたいてい
<https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap06.html#tagtcjh_4>に記述されている
非可搬な文字だから,ちゃんと運用する予定のスクリプトに入れるのは不安……。
処理する相手がRFC 8216に準拠したファイルだという前提があるとするなら
タグごとに挙動を変えるほうが賢いかもしれない。
というのもどのタグにどういう文字列が現れうるかということが規格に明記されているので。
>>446 ありえない文字に置換する手法もいいとは思うけど,そういう制御文字ってたいてい
<https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap06.html#tagtcjh_4>に記述されている
非可搬な文字だから,ちゃんと運用する予定のスクリプトに入れるのは不安……。
450デフォルトの名無しさん
2020/01/26(日) 17:29:07.81ID:EvZHCPY7 しっかし音楽・映像関連の処理をシェルスクリプトでやろうとしているとは,
そうとう変わってるなw
普通そんなファイルが存在して,かつそれらを自分で処理する=その後何らかの形で利用する
ような環境にいるんだったら,もっと色々やりやすい道具(PythonやらJavaScriptやら)もある筈よね。
シェルスクリプトで処理するしかないのは,貧弱な環境と単純なデータ構造に対してでしょうに。
(まあ>>1で「他の言語でやれ」は禁止とあるから,シェルによる処理を考えているけど)
そうとう変わってるなw
普通そんなファイルが存在して,かつそれらを自分で処理する=その後何らかの形で利用する
ような環境にいるんだったら,もっと色々やりやすい道具(PythonやらJavaScriptやら)もある筈よね。
シェルスクリプトで処理するしかないのは,貧弱な環境と単純なデータ構造に対してでしょうに。
(まあ>>1で「他の言語でやれ」は禁止とあるから,シェルによる処理を考えているけど)
451デフォルトの名無しさん
2020/01/26(日) 17:42:41.77ID:GaEtLwpN 世の中には「ナントカ原理主義」を標榜する一派がいるのでな…
いや、この話題はやめておこう
いや、この話題はやめておこう
452デフォルトの名無しさん
2020/01/26(日) 17:54:10.76ID:5vRllc8t >>449
非可搬な文字ってどういう意味?
ただの文字コードに過ぎないし、化けるわけでもなし
どんな問題があるのか全くわからんのだけど、
それにそこのテーブルに書いてある文字がダメだというのなら、
ESCAPE文字もダメってことになるじゃんか
16進数で0x1B、8進数で033、 文字に色をつけるときの\033
echo -e "\033[0;31mテキスト\033[0;39m"
理論上でもいいからどんな問題があるのかを言ってくれないと
非可搬な文字ってどういう意味?
ただの文字コードに過ぎないし、化けるわけでもなし
どんな問題があるのか全くわからんのだけど、
それにそこのテーブルに書いてある文字がダメだというのなら、
ESCAPE文字もダメってことになるじゃんか
16進数で0x1B、8進数で033、 文字に色をつけるときの\033
echo -e "\033[0;31mテキスト\033[0;39m"
理論上でもいいからどんな問題があるのかを言ってくれないと
453デフォルトの名無しさん
2020/01/26(日) 17:55:19.59ID:5vRllc8t 非可搬な文字を心配するぐらいだったらAWKのGNU拡張に対応してるかを心配するほうがより現実的w
454デフォルトの名無しさん
2020/01/26(日) 18:45:22.92ID:EvZHCPY7 >>452
おっしゃる通り理論上の話で実際はほぼありえない(制御文字の使い方もほぼ統一されてるから)けど,
<DEL>文字が端末それ自体を制御する為のものだった場合,それが標準出力に出力された時に
端末自体に挙動が渡ってしまう。
> 文字に色をつけるときの...
事実色をエスケープ文字によって付ける方法はシェルの標準には載ってない。
おっしゃる通り理論上の話で実際はほぼありえない(制御文字の使い方もほぼ統一されてるから)けど,
<DEL>文字が端末それ自体を制御する為のものだった場合,それが標準出力に出力された時に
端末自体に挙動が渡ってしまう。
> 文字に色をつけるときの...
事実色をエスケープ文字によって付ける方法はシェルの標準には載ってない。
455デフォルトの名無しさん
2020/01/26(日) 19:38:00.94ID:5vRllc8t >>454
別に<DEL>じゃなくてもいいよw
略称思いつかなかっただけだし、表示されて困る文字だからこそ
テキストの中に含まれてることはないだろという理由だし
> 事実色をエスケープ文字によって付ける方法はシェルの標準には載ってない。
シェルの標準の載ってるかどうかの話じゃなくて「非可搬な文字」だから「使えない」という
理屈でいくのなら、エスケープ文字も使えないねって話
俺は「非可搬な文字」だけど「使っていけないとは書かれてない」と言ってる
だいたい非可搬っていうのは、その文字の意味が定められていないぐらいの意味やろ
バイナリで見ればただのデータなんだから
バイナリで見ればこのバイトは非可搬な文字と一致するから
データの中に使ってはいけないんだ〜みたいな話したいわけじゃないやろ?
別に<DEL>じゃなくてもいいよw
略称思いつかなかっただけだし、表示されて困る文字だからこそ
テキストの中に含まれてることはないだろという理由だし
> 事実色をエスケープ文字によって付ける方法はシェルの標準には載ってない。
シェルの標準の載ってるかどうかの話じゃなくて「非可搬な文字」だから「使えない」という
理屈でいくのなら、エスケープ文字も使えないねって話
俺は「非可搬な文字」だけど「使っていけないとは書かれてない」と言ってる
だいたい非可搬っていうのは、その文字の意味が定められていないぐらいの意味やろ
バイナリで見ればただのデータなんだから
バイナリで見ればこのバイトは非可搬な文字と一致するから
データの中に使ってはいけないんだ〜みたいな話したいわけじゃないやろ?
456デフォルトの名無しさん
2020/01/26(日) 21:27:37.26ID:EvZHCPY7 >>455
いや,別に<DEL>に限った話じゃない。
今回みたく
「シェルに扱ってほしくない文字を置換して一時的に退避」
→「シェルで処理」→「元に戻す」
↑こういう手法を使うにあったって必要な,
「普通の文字列には現れそうにない文字」
っていうのは大抵不可視の制御文字でしょう?(<DEL>だろうが<US>だろうが<FS>だろうが)
で,そいつら制御文字が標準出力に流れた時の挙動は未定義だから避けたほうがいいんじゃない?
という話。
繰り返すけど,これは理論上の話で,実際はほぼ起こり得ない。
けれども,
printf '\033[>c' | cat
↑こういうスクリプトが実行されたとすると,こいつはある種のOS/端末で端末情報を返すので
パイプも働かないし,おかしなことになる。
しつこいけど,こんなことが意図せず起きるなんて万に一つ。
普通は<US>やら<FS>やらを一時退避用の制御文字として利用するし,こいつらはOS/端末に対してなんら特殊な働き掛けをしないのが通例だからね。
ただ,しないとも限らないし,そうでないことが規定されておらず「非可搬」だと明記されていることも踏まえると,使わないほうがいいかなと。
いや,別に<DEL>に限った話じゃない。
今回みたく
「シェルに扱ってほしくない文字を置換して一時的に退避」
→「シェルで処理」→「元に戻す」
↑こういう手法を使うにあったって必要な,
「普通の文字列には現れそうにない文字」
っていうのは大抵不可視の制御文字でしょう?(<DEL>だろうが<US>だろうが<FS>だろうが)
で,そいつら制御文字が標準出力に流れた時の挙動は未定義だから避けたほうがいいんじゃない?
という話。
繰り返すけど,これは理論上の話で,実際はほぼ起こり得ない。
けれども,
printf '\033[>c' | cat
↑こういうスクリプトが実行されたとすると,こいつはある種のOS/端末で端末情報を返すので
パイプも働かないし,おかしなことになる。
しつこいけど,こんなことが意図せず起きるなんて万に一つ。
普通は<US>やら<FS>やらを一時退避用の制御文字として利用するし,こいつらはOS/端末に対してなんら特殊な働き掛けをしないのが通例だからね。
ただ,しないとも限らないし,そうでないことが規定されておらず「非可搬」だと明記されていることも踏まえると,使わないほうがいいかなと。
457デフォルトの名無しさん
2020/01/26(日) 23:20:03.89ID:5MGoPlaT >>456
> で,そいつら制御文字が標準出力に流れた時の挙動は未定義だから避けたほうがいいんじゃない?
いやだから、そういう理屈でいくと、
「色をつけるエスケープ文字も避けたほうがいいんじゃない?」って
言ってるってことでいいんだねって聞いてるんだが
> で,そいつら制御文字が標準出力に流れた時の挙動は未定義だから避けたほうがいいんじゃない?
いやだから、そういう理屈でいくと、
「色をつけるエスケープ文字も避けたほうがいいんじゃない?」って
言ってるってことでいいんだねって聞いてるんだが
458デフォルトの名無しさん
2020/01/26(日) 23:27:21.62ID:2jcz6vHU Ruby にも、CSV モジュールがある
デフォルト設定では、
行区切り文字は、改行
列区切り文字は、カンマ
クォート文字は、"
この3つの特殊文字が、要素内にない時は、クォートしなくてよい
逆に、ある時は、クォート文字で囲む。
その際、" だけは、"" と2つにする!
デフォルト設定では、
行区切り文字は、改行
列区切り文字は、カンマ
クォート文字は、"
この3つの特殊文字が、要素内にない時は、クォートしなくてよい
逆に、ある時は、クォート文字で囲む。
その際、" だけは、"" と2つにする!
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「脅迫だ」国分太一に同情論 音声データ削除要求など日テレの対応を疑問視する声ネットに噴出「それこそコンプラ違反では」★2 [muffin★]
- 【国際法を無視】日本での「中華人民共和国に台湾問題を論じる資格なし」との声に 中国外交部が厳しく反論… ★2 [BFU★]
- 【工作員】「X」のアカウント所在地公開機能が暴いた世論操作の実態 MAGA支持著名アカウントの多くが米国外から運営 日本にも波及 ★3 [ごまカンパチ★]
- 生クリームだけの真っ白なクリスマスケーキ 大手メーカーが販売、その理由は…フルーツなしで価格は半額以下に ★3 [おっさん友の会★]
- 【文春】元TOKIO・国分太一(51)「女性スタッフ2名への“わいせつ事案”」日テレ事情聴取の全貌が分かった! ★5 [Ailuropoda melanoleuca★]
- 首相答弁「スパイ防止法、外国代理人登録法、ロビー活動公開法などについて速やかに法案を策定する」 [1ゲットロボ★]
- 中国外務省「全く不十分だ。ごまかすような手口を使うべきではない」高市答弁を批判 [834922174]
- まったりまったりおじゃる丸待機スレ🏡
- GeForceのグラボ値上げwwwwwwwwwwwwwwwwwwww
- 高速道路でスピード出してる軽見ると笑ってしまうんだが
- 合法の範囲でできることをやり尽くした人間は犯罪行為に興味を持ちがち
- 元女子高生だけど質問ある?
