トップページ > プログラム > 2019年08月10日 > lTTXvTcQ

書き込み順位&時間帯一覧

2 位/134 ID中時間01234567891011121314151617181920212223Total
書き込み数011211010010002100101111025



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
シェルスクリプト総合 その30

書き込みレス一覧

シェルスクリプト総合 その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に「依存」してしまってる感がある。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。