- シェルスクリプト総合 その30
742 :デフォルトの名無しさん[sage]:2019/08/10(土) 01:26:32.09 ID:lTTXvTcQ - なんか対抗するつもりはないけど俺の回答のほうが何やってるか分かりやすい気がする…。
まあトリッキーなシェルスクリプトを書くのは個人の自由だけど
|
- シェルスクリプト総合 その30
748 :デフォルトの名無しさん[sage]:2019/08/10(土) 02:58:22.15 ID:lTTXvTcQ - >>743
うむ。トリッキーと書いたのは失敗だったな。 ちょっと勘違いを生んでしまった。 繰り返すけどあなたの解答を否定する気は全くないし,自分の解答が一番だなんて思ってないけど 引数「a b c d」を「xaz xbz xcz」に変換するにあたって 「手続き型言語としてのシェルスクリプト」を考えたときに 「引数に順次同じ変換を施して→余計なものを置換する」ほうが 「引数の仕様を利用してfor文を回す→(置き換えられた)引数として利用」 よりも単純かなぁと思っただけ。 あと(問題文に書いてないので推測するしかないが)引数自体はそのまま残したい場合もあるだろうから 引数を置き換えてしまう方法だと不本意な結果を招くかもしれないとも思った。 それこそ「引数を置き換えて新たな引数として利用したい」という要求ならばfor文とsetコマンドを使った方法が いいんだろうけども。 ところで>>713がBash依存という話だけど sed -e 's/ $/\ ' ↑これってBashでしか使えなかったっけ? sedで何かから改行に置換する方法。 一応The Open Groupの仕様書には A line can be split by substituting a <newline> into it. The application shall escape the <newline> in the replacement by preceding it by a <backslash>. と書かれてるんだけど。
|
- シェルスクリプト総合 その30
751 :デフォルトの名無しさん[sage]:2019/08/10(土) 03:10:55.16 ID:lTTXvTcQ - >>750
うん? $ cat ./test.sh #!/bin/sh printf 'x%sz ' "$@" | sed -e 's/ $/\ /' $ ./test.sh a b c xaz xbz xcz となって要求を満してそうなんだけども,違うのかな?
|
- シェルスクリプト総合 その30
761 :デフォルトの名無しさん[sage]:2019/08/10(土) 03:58:27.60 ID:lTTXvTcQ - ぽじっくすに拘ったりぜっしゅに拘ったり急がしやっちゃなw
|
- シェルスクリプト総合 その30
762 :デフォルトの名無しさん[sage]:2019/08/10(土) 04:01:38.59 ID:lTTXvTcQ - >>760
Bashとか持ち出すとbash 2.xとか今現在どこでも使われていないバージョンのことも考えないといけなくなるぞw Solarisでさえbash 4なのにw
|
- シェルスクリプト総合 その30
763 :デフォルトの名無しさん[sage]:2019/08/10(土) 04:04:22.25 ID:lTTXvTcQ - 因みに>>738や>>739はset -uしてると引数が存在しない場合に古いシェルで動かない
|
- シェルスクリプト総合 その30
765 :デフォルトの名無しさん[sage]:2019/08/10(土) 04:06:36.42 ID:lTTXvTcQ - >>752
訊きたいんだけど, 引数を完全に置き換えてしまうことについてはどう思ってる? 再掲するけど > (問題文に書いてないので推測するしかないが)引数自体はそのまま残したい場合もあるだろうから > 引数を置き換えてしまう方法だと不本意な結果を招くかもしれないとも思った。 引数自体を弄くる方法だとこういうことになるのでは……?
|
- シェルスクリプト総合 その30
766 :デフォルトの名無しさん[sage]:2019/08/10(土) 04:08:24.77 ID:lTTXvTcQ - >>752
例えば>>738でIFS=,を使った場合ってどういう挙動になるのが理想なの?
|
- シェルスクリプト総合 その30
771 :デフォルトの名無しさん[sage]:2019/08/10(土) 04:15:21.60 ID:lTTXvTcQ - ZshってPOSIX互換を謳ってたっけ?
少なくとも公式ページ[zsh.org]にはそんな記述は見当らんが…。 もしかしてemulate -R shをPOSIX準拠モードとかだと思ってる…?
|
- シェルスクリプト総合 その30
772 :デフォルトの名無しさん[sage]:2019/08/10(土) 04:19:09.04 ID:lTTXvTcQ - >>770
いやまって。マジで分からんわw 引数「a b c」を「xaz xbz xcz」にする過程でIFS=,を使う場面なんてあるか? そして仮にあったとして >>713と>>738とでその時の挙動に違いがあるとは思えんのだが↓ もしかして 引数「a,b,c」を「xaz xbz xcz」にするとかそういう話か? for i in IFS=, "$@"; do set -- "$@" "x${i}z" shift done echo "$@" こんな風に?w
|
- シェルスクリプト総合 その30
774 :デフォルトの名無しさん[sage]:2019/08/10(土) 04:20:29.77 ID:lTTXvTcQ - >>694
> 今回は a b c を xaz,xbz,xcz にしたいから IFS=, を使わなかったわけだが →分かる > それでもIFS=,を使うならばどうすればよいだろうか?→そうだな,どうすればいいんだろう。 > 言い換えると、引き数 a b c を xaz xbz xcz にすればいいわけだが、→え?空白区切り?今IFS=,の話だよな?? > さてどうすればよいだろうか? →????
|
- シェルスクリプト総合 その30
783 :デフォルトの名無しさん[sage]:2019/08/10(土) 04:42:42.71 ID:lTTXvTcQ - >>776
うんだってプログラマじゃねーもんw 寧ろその程度の能力でイキれるお前がプログラマっぽくねぇなw こっちの類推能力も足りんかもしれんが そっちの説明能力もかなり欠如してんぞw
|
- シェルスクリプト総合 その30
784 :デフォルトの名無しさん[sage]:2019/08/10(土) 04:43:21.02 ID:lTTXvTcQ - >>782
すまんがその前に>>765に答えてほしい
|
- シェルスクリプト総合 その30
788 :デフォルトの名無しさん[sage]:2019/08/10(土) 04:50:45.96 ID:lTTXvTcQ - >>782
>>786で一応答えを頂いたので,>>768への回答をば。 https://www.in-ulm.de/~mascheck/various/bourne_args/ ここの These shells behave the old way and need ${1+"$@"}: に色々載ってるぜ 俺が知らないシェルもあって勉強になったわ。
|
- シェルスクリプト総合 その30
789 :デフォルトの名無しさん[sage]:2019/08/10(土) 04:57:52.03 ID:lTTXvTcQ - >>785
うーむ。自省という言葉を教えてあげたいw まあある程度シェルスクリプトの能力はありそうだが それ以外が致命的とお見受けするわ……。 ていうかシェルスクリプトの能力ってそんな高める必要ある? >>713程度が書ければそれで十分。 より高度な,それこそJSONやXMLみたいな階層構造のある 「1行1データ」とは限らない形式のファイルを読み込みたけりゃ, CなりPerlなりを使えばよろしい。 もしくはjqやらxmllintやらで適切に処理して シェルスクリプトに掛ければよろしい。
|
- シェルスクリプト総合 その30
793 :デフォルトの名無しさん[sage]:2019/08/10(土) 06:27:36.08 ID:lTTXvTcQ - >>790
うーん。 まあそうなのかもしれないが poshを「無意識に」使ってしまう環境なんてあるのだろうか? 例えば#!/bin/shが/usr/bin/bashにリンクされてる環境であれば, BashのPOSIX互換モード特有のバグには注意しなくてはいけないし, /bin/shの実体が/usr/bin/bashになってる環境は多いので, 多くの利用者が「今 自分が使っている/bin/shが実はBashだ」と意識することなく POSIX shで正しく動く筈のシェルスクリプトを走らせることがあると想定できる。 でもposhが既定で/bin/shにリンクされてたりする環境があるとは思えない…。
|
- シェルスクリプト総合 その30
797 :デフォルトの名無しさん[sage]:2019/08/10(土) 09:52:55.77 ID:lTTXvTcQ - >>794
もう触れるな。
|
- シェルスクリプト総合 その30
828 :デフォルトの名無しさん[sage]:2019/08/10(土) 13:35:44.59 ID:lTTXvTcQ - >>826
???「24時間働けますか?」
|
- シェルスクリプト総合 その30
829 :デフォルトの名無しさん[sage]:2019/08/10(土) 13:37:08.94 ID:lTTXvTcQ - >>818
うん。 だって>>685でbash 2.xの話をしてるということは 少なくともBashがそのバージョンであった時代くらいまでは考えるべきなんでしょ?
|
- シェルスクリプト総合 その30
833 :デフォルトの名無しさん[sage]:2019/08/10(土) 14:39:24.77 ID:lTTXvTcQ - シェルスクリプトの才能ってなに?
驕り高ぶらないこと?w ↑半分本気
|
- シェルスクリプト総合 その30
839 :デフォルトの名無しさん[sage]:2019/08/10(土) 17:00:18.98 ID:lTTXvTcQ - 草
|
- シェルスクリプト総合 その30
862 :デフォルトの名無しさん[sage]:2019/08/10(土) 19:49:03.72 ID:lTTXvTcQ - gitコマンドの話(しかも実装の話)を延々とされても困るわ
|
- シェルスクリプト総合 その30
879 :デフォルトの名無しさん[sage]:2019/08/10(土) 20:49:13.37 ID:lTTXvTcQ - どうでもいいけどgitやらrbenvやらって「POSIXシェルスクリプト」で書かれてんの?
そうじゃなきゃ彼の「世界中でPOSIX準拠のシェルスクリプトが動いてる!」って主張は まったく支援されない,いや寧ろBashに依存したシェルスクリプトがrbenvという世界的な プログラムで採用されてることによってその説は説得力を失なってるまである。 あ,「俺は『世界中でPOSIX準拠のシェルスクリプトが動いてる』なんて言ってない」なんて くだらねー反論を先に封じておくと, >>852に対して>>856を出した訳だから, 当然「シェルスクリプトの一体何%がPOSIX準拠なのか」に答えてる訳だからねぇ。
|
- シェルスクリプト総合 その30
893 :デフォルトの名無しさん[sage]:2019/08/10(土) 21:56:20.44 ID:lTTXvTcQ - 被害妄想やばない?
|
- シェルスクリプト総合 その30
904 :デフォルトの名無しさん[sage]:2019/08/10(土) 22:48:47.16 ID:lTTXvTcQ - だいたいPOSIXに従ってないシェルもあるんだから
POSIXで書いたからといってどこでも動くわけじゃないし。 なんというか,ベンダ依存を嫌うあまりPOSIXに「依存」してしまってる感がある。
|