シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
前スレ: シェルスクリプト総合 その27(https://mevius.5ch.net/test/read.cgi/unix/1525337663/)
探検
シェルスクリプト総合 その28
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2018/07/24(火) 11:01:16.36ID:r0TJj2hB481デフォルトの名無しさん
2018/08/31(金) 12:15:59.98ID:4WvfdMT+ めっちゃ早口で言ってそう
482デフォルトの名無しさん
2018/08/31(金) 12:54:57.94ID:hD6bHOXY 録音してゆっくり再生してようやっと何言ってるかわかる、ぐらいかな
483デフォルトの名無しさん
2018/08/31(金) 13:05:55.30ID:DXKxWv2O >>481-482
本当に自覚してないようだから教えてあげるけど
そういうくだらない雑談をよそでやんなさいって言ってんの。
それともそのレスになにか価値があるというのなら
どうぞいってください。話を聞くよ?
本当に自覚してないようだから教えてあげるけど
そういうくだらない雑談をよそでやんなさいって言ってんの。
それともそのレスになにか価値があるというのなら
どうぞいってください。話を聞くよ?
484デフォルトの名無しさん
2018/08/31(金) 13:17:47.02ID:ANKbwE4L 子供だなあ
485デフォルトの名無しさん
2018/08/31(金) 13:42:20.88ID:hD6bHOXY このスレは君が価値を感じる書き込みをしなければならないスレではない。
486デフォルトの名無しさん
2018/08/31(金) 13:43:18.09ID:hD6bHOXY キリッ
487デフォルトの名無しさん
2018/08/31(金) 13:44:06.35ID:sUUndK8T ここって5chだよな?
488デフォルトの名無しさん
2018/08/31(金) 13:44:30.70ID:H6r51FSy うん
489デフォルトの名無しさん
2018/08/31(金) 14:03:56.61ID:DXKxWv2O せっかくプログラム板に移動したのに、荒らしは消えないのねw
490デフォルトの名無しさん
2018/08/31(金) 14:48:59.64ID:LaBPL+3F どういうぎゃぐなのかと思わせられるほどの無自覚ぶり。他人に自覚とか言ってるのに
491デフォルトの名無しさん
2018/08/31(金) 15:00:22.51ID:/mKi/Wls )ソ)
ッλ ノ(.,ノ)
(゙- ..::.::. . (
(ソ. .彡⌒ミ. )ソ)
).::'; (´・ω・`) ス (
ソ .::;';'(つ ⊂)::;';'`〜、.
( :;';' |__∧_| ::;';' ヽ)
`'~`'''`'`'`~'~~`~~'`'`''''"`'`'`''`''''"`'``'~`''`'~`'''`'`'`~
さ あ 禿 げ 上 が っ て ま い り ま し た
ッλ ノ(.,ノ)
(゙- ..::.::. . (
(ソ. .彡⌒ミ. )ソ)
).::'; (´・ω・`) ス (
ソ .::;';'(つ ⊂)::;';'`〜、.
( :;';' |__∧_| ::;';' ヽ)
`'~`'''`'`'`~'~~`~~'`'`''''"`'`'`''`''''"`'``'~`''`'~`'''`'`'`~
さ あ 禿 げ 上 が っ て ま い り ま し た
492デフォルトの名無しさん
2018/08/31(金) 15:07:49.61ID:H6r51FSy 頭に刺さってる髪の数だけ書き込みを許してやる
493デフォルトの名無しさん
2018/08/31(金) 15:20:54.53ID:vplIlyda ファイルの更新について教えてください
フラッシュメモリ(SDカード)にファイルを保存しています
ご存知のようにフラッシュメモリには書き換え回数があり
使いすぎると壊れるのですが
シェルでリダイレクトして追記していく形にした場合
追記分のブロック数分が更新されると考えていいのでしょうか
もしくは100バイト追記してもファイルの大きさが100MBあったら
ファイルシステム上再配置されて
フラッシュメモリ上は100MB相当(のブロック)の更新がかかりますか?
またviなどのエディタで更新した場合はどうなのでしょうか?
やはり100MB分の更新になりますか?
フラッシュメモリ(SDカード)にファイルを保存しています
ご存知のようにフラッシュメモリには書き換え回数があり
使いすぎると壊れるのですが
シェルでリダイレクトして追記していく形にした場合
追記分のブロック数分が更新されると考えていいのでしょうか
もしくは100バイト追記してもファイルの大きさが100MBあったら
ファイルシステム上再配置されて
フラッシュメモリ上は100MB相当(のブロック)の更新がかかりますか?
またviなどのエディタで更新した場合はどうなのでしょうか?
やはり100MB分の更新になりますか?
494デフォルトの名無しさん
2018/08/31(金) 16:11:16.42ID:j8UTgVSe >>493
OSやドライバに依存する。
でもだいたいはライトキャッシュがあって実際の書き込みは中々されないと思うよ。
ましてや書き込み回数が多くなると劣化するメデイアと初めからわかっているものに対してバンバン書くようなことは普通のドライバならしないと思う。
OSやドライバに依存する。
でもだいたいはライトキャッシュがあって実際の書き込みは中々されないと思うよ。
ましてや書き込み回数が多くなると劣化するメデイアと初めからわかっているものに対してバンバン書くようなことは普通のドライバならしないと思う。
495デフォルトの名無しさん
2018/08/31(金) 19:32:51.61ID:OUCwI4mz この動きって仕様ですか?
No1と同じような動きを$@を一旦別の変数に入れて
実行したいのですがなにか方法はありますか?
./test.sh "a 1" "b 2"
# No1
for i in "$@"; do
echo $i
done
# a 1
# b 2
# No2
args="$@"
for i in "$args"; do
echo $i
done
# a 1 b 2
# No3
args="$@"
for i in $args; do
echo $i
done
# a
# 1
# b
# 2
No1と同じような動きを$@を一旦別の変数に入れて
実行したいのですがなにか方法はありますか?
./test.sh "a 1" "b 2"
# No1
for i in "$@"; do
echo $i
done
# a 1
# b 2
# No2
args="$@"
for i in "$args"; do
echo $i
done
# a 1 b 2
# No3
args="$@"
for i in $args; do
echo $i
done
# a
# 1
# b
# 2
496デフォルトの名無しさん
2018/08/31(金) 19:46:53.74ID:QWemr4wG >>495
仕様だと思う。
$@の時点ではシェルが解釈した引数ごとに分かれているのに対して
"$@"←のようにしてしまうとそれがひとまとまりに見做されてしまい
結局args="a 1 b 2"と代入していることになる。
仕様だと思う。
$@の時点ではシェルが解釈した引数ごとに分かれているのに対して
"$@"←のようにしてしまうとそれがひとまとまりに見做されてしまい
結局args="a 1 b 2"と代入していることになる。
497デフォルトの名無しさん
2018/08/31(金) 19:51:37.92ID:QWemr4wG 解決方法はevalやらを使って
#! /bin/sh
n=1
for i in "$@"; do
eval "arg$n=\"$i\""
n=$((n + 1))
done
こうやるといいんでは。
arg3とかで「3番目の引数」を参照できるようになってる筈
#! /bin/sh
n=1
for i in "$@"; do
eval "arg$n=\"$i\""
n=$((n + 1))
done
こうやるといいんでは。
arg3とかで「3番目の引数」を参照できるようになってる筈
498デフォルトの名無しさん
2018/08/31(金) 19:53:52.69ID:QWemr4wG ていうか質問の内容から察するに二種類の別の引数を処理したいんだよね?
すなおにPythonとか使ったほうがいいとは思うが……
俺が示したやり方だと引数の位置が絶対参照だし 引数を処理する度に変数が衝突するし
もちろん俺の方法が下手というのもあるが まあシェルスクリプトで引数処理は鬼門であることは間違いない
すなおにPythonとか使ったほうがいいとは思うが……
俺が示したやり方だと引数の位置が絶対参照だし 引数を処理する度に変数が衝突するし
もちろん俺の方法が下手というのもあるが まあシェルスクリプトで引数処理は鬼門であることは間違いない
499デフォルトの名無しさん
2018/08/31(金) 19:59:38.59ID:OUCwI4mz どう解釈すれば、この挙動を理解できますかね?
./test.sh "a 1" "b 2"
for i in "A $@ Z"; do
echo $i
done
# A a 1
# b 2 Z
for i in "A Z"; do
echo $i
done
# A Z
./test.sh "a 1" "b 2"
for i in "A $@ Z"; do
echo $i
done
# A a 1
# b 2 Z
for i in "A Z"; do
echo $i
done
# A Z
500デフォルトの名無しさん
2018/08/31(金) 20:04:13.23ID:4o8e5lPA >>493
シェルの追記はかからない。
vi/vim はかかる。
>> 495
仕様。配列にぶっこむ。
HOGE=("$@")
for ent in "${HOGE[@]}"; do
echo $ent
done
シェルの追記はかからない。
vi/vim はかかる。
>> 495
仕様。配列にぶっこむ。
HOGE=("$@")
for ent in "${HOGE[@]}"; do
echo $ent
done
501デフォルトの名無しさん
2018/08/31(金) 20:20:45.59ID:4o8e5lPA >>499
"A $@ Z" → A\_a\_1_b\_2\_Z
"A Z" → A\_Z
アンダースコアはスペースと思ってくれ。
ダブルクォートはスペースをエスケープしてる。
man に載ってたと思って読んでたが見つからんかった。
"A $@ Z" → A\_a\_1_b\_2\_Z
"A Z" → A\_Z
アンダースコアはスペースと思ってくれ。
ダブルクォートはスペースをエスケープしてる。
man に載ってたと思って読んでたが見つからんかった。
502デフォルトの名無しさん
2018/08/31(金) 20:47:48.56ID:6cxiNGZa man の特殊パラメータの項に書いてあるのはこういうことか?
"A $@ Z" → "A ""$@"" Z"
確かに動作は同じだ。
試したコードはこんな感じ
for i in "$@"; do
echo $i
done
for i in "A $@ Z"; do
echo $i
done
for i in "A ""$@"" Z"; do
echo $i
done
"A $@ Z" → "A ""$@"" Z"
確かに動作は同じだ。
試したコードはこんな感じ
for i in "$@"; do
echo $i
done
for i in "A $@ Z"; do
echo $i
done
for i in "A ""$@"" Z"; do
echo $i
done
503デフォルトの名無しさん
2018/08/31(金) 20:52:30.52ID:OUCwI4mz よくわからんね。 $@がダブルクォートの中に入ってたら
"$1" "$2" ・・・ "$n" に展開されるってことかな?
でもそれだと
# A a 1
こうなる理由がよくわからなんのだよな
"A $@ Z" は
"A $1" "$2" "$3" ・・・ "$n Z" に
展開されているとしか思えない
"$1" "$2" ・・・ "$n" に展開されるってことかな?
でもそれだと
# A a 1
こうなる理由がよくわからなんのだよな
"A $@ Z" は
"A $1" "$2" "$3" ・・・ "$n Z" に
展開されているとしか思えない
504デフォルトの名無しさん
2018/08/31(金) 21:53:31.46ID:KmkRvZ7D505デフォルトの名無しさん
2018/08/31(金) 23:13:07.36ID:QWemr4wG506デフォルトの名無しさん
2018/08/31(金) 23:15:52.07ID:QWemr4wG507デフォルトの名無しさん
2018/08/31(金) 23:29:17.32ID:OUCwI4mz イイかダメかで言えば、arg1、arg2、arg3、・・・では
ループできないのでこれだけではだめですね。
シェルスクリプトにもライブラリが欲しい所ですね
ループできないのでこれだけではだめですね。
シェルスクリプトにもライブラリが欲しい所ですね
508デフォルトの名無しさん
2018/08/31(金) 23:44:36.90ID:4ZfpOo1s そんなもんいらない
そんなん使うぐらいなら別のスクリプトを
シェルから使う
ホントな頭悪いことばっかりいってるわ
そんなん使うぐらいなら別のスクリプトを
シェルから使う
ホントな頭悪いことばっかりいってるわ
509デフォルトの名無しさん
2018/09/01(土) 00:01:57.02ID:Z9gelboG510デフォルトの名無しさん
2018/09/01(土) 04:09:47.42ID:IN1XIdeB 最初は使い捨てだからとシェルスクリプトを書くが
なんだかんだ使い続けて、利便性向上の為にアップデートを続け
最後には複数ファイルに及ぶ意外に大規模な代物に
今更マトモな言語で作り直すのも面倒臭い
やるなら最初からマトモな言語で作っておけば良かったと
なんだかんだ使い続けて、利便性向上の為にアップデートを続け
最後には複数ファイルに及ぶ意外に大規模な代物に
今更マトモな言語で作り直すのも面倒臭い
やるなら最初からマトモな言語で作っておけば良かったと
511デフォルトの名無しさん
2018/09/01(土) 05:19:02.92ID:Z9gelboG >>510
その通り
一部のよほど頭の良い人(USP研究所とかそのあたり)じゃないと
まともに扱えない単純だけど難しい言語
ほとんどの人間はPythonやらを使ったほうがいい
Pythonはエラー処理やセキュリティ関連も既定で充実してるから
バカでもプログラムが書けるようになってる
その通り
一部のよほど頭の良い人(USP研究所とかそのあたり)じゃないと
まともに扱えない単純だけど難しい言語
ほとんどの人間はPythonやらを使ったほうがいい
Pythonはエラー処理やセキュリティ関連も既定で充実してるから
バカでもプログラムが書けるようになってる
512デフォルトの名無しさん
2018/09/01(土) 06:18:36.99ID:j0QmLW2E シェルスクリプトを他のスクリプトへコンバートするツールとか無いのかな?
513デフォルトの名無しさん
2018/09/01(土) 07:21:55.56ID:mPcVbgud514デフォルトの名無しさん
2018/09/01(土) 07:58:52.51ID:dtHP3qHu515デフォルトの名無しさん
2018/09/01(土) 08:09:40.25ID:mPcVbgud 例えば、rbenvとか、それなりの規模だけど
シェルスクリプトで作るのが適している
シェルスクリプトで作るのが適している
516デフォルトの名無しさん
2018/09/01(土) 08:10:56.58ID:kUpkBQ3x >>493-494
>追記分のブロック数分が更新されると考えていいのでしょうか
たぶん、追記分だけ
ページサイズが4KB で、20KB のファイルがある時、
追記すると、最初の5ページに変化はない。
6ページ目が追加されるだけ
ただし、ファイルの中ほどを更新した場合は、どうなるかわからない。
3ページ目だけを更新した場合、1, 2, 4, 5ページに変化はないけど、
3ページ目のサイズが大きい場合、6ページ目を確保して、それを間に入れるから、
1, 2, (3, 6,) 4, 5 のようなページの並びになるのかな?
まあ、ファイルシステムの説明を読まないと、わからない
>追記分のブロック数分が更新されると考えていいのでしょうか
たぶん、追記分だけ
ページサイズが4KB で、20KB のファイルがある時、
追記すると、最初の5ページに変化はない。
6ページ目が追加されるだけ
ただし、ファイルの中ほどを更新した場合は、どうなるかわからない。
3ページ目だけを更新した場合、1, 2, 4, 5ページに変化はないけど、
3ページ目のサイズが大きい場合、6ページ目を確保して、それを間に入れるから、
1, 2, (3, 6,) 4, 5 のようなページの並びになるのかな?
まあ、ファイルシステムの説明を読まないと、わからない
517デフォルトの名無しさん
2018/09/01(土) 08:19:23.69ID:kUpkBQ3x vagrant, chef は、Ruby で書かれているだろ
大きい手順書を、シェルスクリプトで書くのは、途方もない!
大きい手順書を、シェルスクリプトで書くのは、途方もない!
518デフォルトの名無しさん
2018/09/01(土) 08:31:44.88ID:Z9gelboG ・テスト環境……なし
・ドキュメント生成……なし
・バージョン管理……なし
・パッケージシステム……なし
まあそりゃ大規模開発には向かないわな。
やってもいいのは上記の諸々を自作できるような賢い人間。
(俺を含めた)普通の人間は「連番画像をDLする」とか「写真フォルダを整理する」
ときに一度限りのシェルスクリプトを書く程度に留めて
開発はPythonやRubyやJava(個人的に後者二つはあまり好きじゃないが)を利用するのが一番いい。
もちろん自身にとってもだが,他人にとっても不具合が少ないし事故が起こりにくいというのは大きな利点でしょうね。
・ドキュメント生成……なし
・バージョン管理……なし
・パッケージシステム……なし
まあそりゃ大規模開発には向かないわな。
やってもいいのは上記の諸々を自作できるような賢い人間。
(俺を含めた)普通の人間は「連番画像をDLする」とか「写真フォルダを整理する」
ときに一度限りのシェルスクリプトを書く程度に留めて
開発はPythonやRubyやJava(個人的に後者二つはあまり好きじゃないが)を利用するのが一番いい。
もちろん自身にとってもだが,他人にとっても不具合が少ないし事故が起こりにくいというのは大きな利点でしょうね。
519デフォルトの名無しさん
2018/09/01(土) 08:38:18.84ID:mPcVbgud520デフォルトの名無しさん
2018/09/01(土) 08:45:05.20ID:mPcVbgud >>518
それ理屈にあってないだろ
"作れない" ならともかく、現在ないから大規模開発に向かないという理屈なら、
あれば大規模開発に向いているって言うことになるぞw
例えば、今はsystemdに役目を移してしまったが、
Linuxの起動の仕組みはシェルスクリプトだった。
ちなみにgitも結構シェルスクリプトが含まれているよ
https://github.com/git/git/blob/master/contrib/subtree/git-subtree.sh
それにテストもドキュメントもバージョン管理もあるね。
(って今気づいたがバージョン管理ってなんだ?)
それ理屈にあってないだろ
"作れない" ならともかく、現在ないから大規模開発に向かないという理屈なら、
あれば大規模開発に向いているって言うことになるぞw
例えば、今はsystemdに役目を移してしまったが、
Linuxの起動の仕組みはシェルスクリプトだった。
ちなみにgitも結構シェルスクリプトが含まれているよ
https://github.com/git/git/blob/master/contrib/subtree/git-subtree.sh
それにテストもドキュメントもバージョン管理もあるね。
(って今気づいたがバージョン管理ってなんだ?)
521デフォルトの名無しさん
2018/09/01(土) 08:48:34.52ID:mPcVbgud なんか、JavaScriptと同じ空気を感じるな。
いろんな仕組みがないから、簡易的な用途にしか使えないと
最初は思われていたが、それらの仕組みが揃った今では
サイト全体をJavaScriptで作るのもありえないことではなくなった。
いろんな仕組みがないから、簡易的な用途にしか使えないと
最初は思われていたが、それらの仕組みが揃った今では
サイト全体をJavaScriptで作るのもありえないことではなくなった。
522デフォルトの名無しさん
2018/09/01(土) 08:50:14.95ID:dtHP3qHu523デフォルトの名無しさん
2018/09/01(土) 08:53:58.50ID:mPcVbgud >>522
だから規模で判断するのは間違いという結論になると言ってるんだが?
だから規模で判断するのは間違いという結論になると言ってるんだが?
524デフォルトの名無しさん
2018/09/01(土) 08:56:54.80ID:J8s4Euww >>513
具体的にはどういう場合?
具体的にはどういう場合?
525デフォルトの名無しさん
2018/09/01(土) 09:00:31.35ID:mPcVbgud >>524
だからrbenvっていってるじゃん。
だからrbenvっていってるじゃん。
526デフォルトの名無しさん
2018/09/01(土) 09:01:03.88ID:J8s4Euww >>525
具体的に
具体的に
527デフォルトの名無しさん
2018/09/01(土) 09:03:56.67ID:dtHP3qHu >>523>>525
それは例外であって反例ではない
それは例外であって反例ではない
528デフォルトの名無しさん
2018/09/01(土) 09:07:50.87ID:kUpkBQ3x 仮想化は、典型的な手順書だろ。
パッケージをダウンロードして、インストールして、環境変数PATH を通して
シェルスクリプトで作るのは面倒。
Ruby でOK
パッケージをダウンロードして、インストールして、環境変数PATH を通して
シェルスクリプトで作るのは面倒。
Ruby でOK
529デフォルトの名無しさん
2018/09/01(土) 09:16:02.22ID:Z9gelboG まあRubyじゃなくてもRubyのように
ドキュメント生成やパッケージ管理ができればいいんだよね
PythonがいいよPythonが。
ドキュメント生成やパッケージ管理ができればいいんだよね
PythonがいいよPythonが。
530デフォルトの名無しさん
2018/09/01(土) 09:23:11.21ID:mPcVbgud531デフォルトの名無しさん
2018/09/01(土) 09:24:47.95ID:HRxiLrgz pwshが便利すぎてな
532デフォルトの名無しさん
2018/09/01(土) 09:25:44.74ID:mPcVbgud >>528
> 仮想化は、典型的な手順書だろ。
たまたま手順書がシェルスクリプトで書かれていたからって、
手順書だからというのはシェルスクリプトで書く理由にはならないんだよ。
あんたはrubyが入ってない、入れたくないという環境でも
動かしたいという理由とごっちゃにしてるだけ
> 仮想化は、典型的な手順書だろ。
たまたま手順書がシェルスクリプトで書かれていたからって、
手順書だからというのはシェルスクリプトで書く理由にはならないんだよ。
あんたはrubyが入ってない、入れたくないという環境でも
動かしたいという理由とごっちゃにしてるだけ
533デフォルトの名無しさん
2018/09/01(土) 09:37:39.89ID:dtHP3qHu >>530
分かった、好きにしてくれ
分かった、好きにしてくれ
534デフォルトの名無しさん
2018/09/01(土) 09:45:09.27ID:mPcVbgud 理解したならいい。
好きにするのは普通にしている。
ここでやってるのは、お前に理解させることだからな。
反論がなくなればそこで終了だ
好きにするのは普通にしている。
ここでやってるのは、お前に理解させることだからな。
反論がなくなればそこで終了だ
535デフォルトの名無しさん
2018/09/01(土) 10:52:03.88ID:f+i9u0Am >>531
Unix に新しいシェルが!? と思ったら PowerShell だったのね
Unix に新しいシェルが!? と思ったら PowerShell だったのね
536デフォルトの名無しさん
2018/09/01(土) 11:17:42.65ID:qlVPfHnQ 結局どういう場合にシェルが適しているのか一言も言ってない件
537デフォルトの名無しさん
2018/09/01(土) 11:35:25.52ID:mPcVbgud >>526
1. シェル環境そのものをカスタマイズするためのもの(例 rbenv)
通常のプロセスはサブプロセスとして起動するので、カレントシェルのカスタマイズはできない
2. 特定の言語のライブラリやランタイムに依存したくないもの(例 Docker)
あらかじめ入っているものだけで起動できるので、環境を整える必要がなくなる
コンテナやIoTといった小さな制限されたイメージでも使える
逆にさ、他の言語の方こそ「適している理由」が少ないと思うな。
例えばRubyで作ったものはPythonで作ることだってできるだろ?
1. シェル環境そのものをカスタマイズするためのもの(例 rbenv)
通常のプロセスはサブプロセスとして起動するので、カレントシェルのカスタマイズはできない
2. 特定の言語のライブラリやランタイムに依存したくないもの(例 Docker)
あらかじめ入っているものだけで起動できるので、環境を整える必要がなくなる
コンテナやIoTといった小さな制限されたイメージでも使える
逆にさ、他の言語の方こそ「適している理由」が少ないと思うな。
例えばRubyで作ったものはPythonで作ることだってできるだろ?
538デフォルトの名無しさん
2018/09/01(土) 11:42:20.50ID:mPcVbgud 3. CLIコマンドとCLIコマンドのグルー言語
リダイレクトやパイプを使った処理はシェルスクリプトが得意
他の言語でもネイティブに記述するのが面倒だからか
内部的にシェルを経由してたりするしな
リダイレクトやパイプを使った処理はシェルスクリプトが得意
他の言語でもネイティブに記述するのが面倒だからか
内部的にシェルを経由してたりするしな
539デフォルトの名無しさん
2018/09/01(土) 11:48:25.44ID:qlVPfHnQ540デフォルトの名無しさん
2018/09/01(土) 11:55:22.51ID:mPcVbgud >>539
はぁ、だから
> 逆にさ、他の言語の方こそ「適している理由」が少ないと思うな。
> 例えばRubyで作ったものはPythonで作ることだってできるだろ?
こう書いたのに。
たとえ対象となるものが少なくとも、
適している理由があるだろ?
他の言語は、その適してる理由すらないのにって話だよ
2がC#ですら可能? じゃあ俺が使ってるルータ(OpenWrt)で動かしてみなよ
はぁ、だから
> 逆にさ、他の言語の方こそ「適している理由」が少ないと思うな。
> 例えばRubyで作ったものはPythonで作ることだってできるだろ?
こう書いたのに。
たとえ対象となるものが少なくとも、
適している理由があるだろ?
他の言語は、その適してる理由すらないのにって話だよ
2がC#ですら可能? じゃあ俺が使ってるルータ(OpenWrt)で動かしてみなよ
541デフォルトの名無しさん
2018/09/01(土) 11:57:50.49ID:mPcVbgud 参考までに言っておくと、俺が扱ってるルータは
比較的スペックが高いものだが、Flashのサイズは16MBしかなく
ファームウェアを除いたら空き容量は10MB程度だからな
比較的スペックが高いものだが、Flashのサイズは16MBしかなく
ファームウェアを除いたら空き容量は10MB程度だからな
542デフォルトの名無しさん
2018/09/01(土) 12:11:14.41ID:HRxiLrgz 自分が今使ってる環境を前提にして
同じように考えろと周りにも要求する人ってたまにいるけどその議論に意味あるのか?
同じように考えろと周りにも要求する人ってたまにいるけどその議論に意味あるのか?
543デフォルトの名無しさん
2018/09/01(土) 12:23:32.27ID:mPcVbgud544デフォルトの名無しさん
2018/09/01(土) 12:35:03.95ID:HRxiLrgz >>543
だからって極貧環境を前提にするのも間違い
極貧環境でリッチなスクリプトが動かないのはわかった
その環境ではshは素晴らしいものだ
スクリプト言語の完全敗北だよ
そりゃ動かせないのに勝負になるわけない
この結論に議論の余地はないだろう
じゃあ議論が終わったので次に行こう
業務規約でツールインストール禁止のWindows 7環境でshのメリットはあるか?
だからって極貧環境を前提にするのも間違い
極貧環境でリッチなスクリプトが動かないのはわかった
その環境ではshは素晴らしいものだ
スクリプト言語の完全敗北だよ
そりゃ動かせないのに勝負になるわけない
この結論に議論の余地はないだろう
じゃあ議論が終わったので次に行こう
業務規約でツールインストール禁止のWindows 7環境でshのメリットはあるか?
545デフォルトの名無しさん
2018/09/01(土) 12:36:44.49ID:mPcVbgud546デフォルトの名無しさん
2018/09/01(土) 12:38:38.54ID:dtHP3qHu547デフォルトの名無しさん
2018/09/01(土) 12:43:20.26ID:mPcVbgud >>544
> 業務規約でツールインストール禁止のWindows 7環境でshのメリットはあるか?
WindowsとLinuxの両方で使うなら、
両方のOSでそのまま動くツールがほしいね
まずツールインストール禁止なんだから
任意のバイナリ、RubyやPythonをインストールすることは禁止だ。
(バイナリOKならbusyboxでもダウンロードすればいいということになる)
だからバッチファイル or PowerShell or JavaScript(JScript) と
シェルスクリプト の二段構えにするしか無いだろう。
二重にコードを開発するのが嫌なら、簡易インタプリタ言語でも作って、
WindowsではJavaScrptで、Linuxならシェルスクリプトで
パースしてコマンドに変換して実行とかかな
ってことで、シェルスクリプトでもそういう用途のために
ライブラリとか充実してるといいよねという話に戻すw
> 業務規約でツールインストール禁止のWindows 7環境でshのメリットはあるか?
WindowsとLinuxの両方で使うなら、
両方のOSでそのまま動くツールがほしいね
まずツールインストール禁止なんだから
任意のバイナリ、RubyやPythonをインストールすることは禁止だ。
(バイナリOKならbusyboxでもダウンロードすればいいということになる)
だからバッチファイル or PowerShell or JavaScript(JScript) と
シェルスクリプト の二段構えにするしか無いだろう。
二重にコードを開発するのが嫌なら、簡易インタプリタ言語でも作って、
WindowsではJavaScrptで、Linuxならシェルスクリプトで
パースしてコマンドに変換して実行とかかな
ってことで、シェルスクリプトでもそういう用途のために
ライブラリとか充実してるといいよねという話に戻すw
548デフォルトの名無しさん
2018/09/01(土) 12:46:29.79ID:mPcVbgud 皮肉が伝わっていなそうだから言っておくが、>545は
「どちらもなにかを前提としてる」だろってこと
そして2つの違いはその前提が
「多くの環境に対応する」前提 なのか
「特定の環境を切り捨てる」前提なのかってこと
「どちらもなにかを前提としてる」だろってこと
そして2つの違いはその前提が
「多くの環境に対応する」前提 なのか
「特定の環境を切り捨てる」前提なのかってこと
549デフォルトの名無しさん
2018/09/01(土) 13:52:25.73ID:Z9gelboG 結局シェルスクリプトは大規模開発に向いてるの?
550デフォルトの名無しさん
2018/09/01(土) 13:52:43.19ID:7zKoqoPj 最近知ったけど&&や||使えばifによる判定不要なんだね
ls aaa && echo exists
ls aaa || echo not exists
でもプログラムやってきてた自分としては
if使っちゃうかなあ・・・
ls aaa && echo exists
ls aaa || echo not exists
でもプログラムやってきてた自分としては
if使っちゃうかなあ・・・
551デフォルトの名無しさん
2018/09/01(土) 14:21:11.49ID:mPcVbgud > でもプログラムやってきてた自分としては
???
俺もプログラムやってきたが、こういう書き方を知った(意識した)のはperlが最初だな
http://perldoc.jp/func/die
> chdir '/usr/spool/news' or die "Can't cd to spool: $!\n"
(or は優先順位が違うだけで || と同じ)
以降Rubyや
https://docs.ruby-lang.org/ja/latest/doc/spec=2foperator.html#or
> demo || die
> demo or die
JavaScriptでも使うようになった
https://stackoverflow.com/questions/51206667/or-in-ternary-operator-using
> (a === 0 || b === 0) && console.log('aloha amigo')
(Perlよりも前にやっていた)C言語でもできたんだが、当時は使ってなかったな。
https://qiita.com/gyu-don/items/a0aed0f94b8b35c43290
> a || error(); // if(!a){ error(); } のような挙動
> a || (a = 1); // if(!a){ a = 1; } のような挙動(代入が式である言語で有効)
こういう書き方ができないのはVBぐらいじゃないか?
VBは短絡評価じゃないから、先に|| や && の右側が評価されてしまったはず
えーと、いつから自分がプログラムやってきたと錯覚していた?
???
俺もプログラムやってきたが、こういう書き方を知った(意識した)のはperlが最初だな
http://perldoc.jp/func/die
> chdir '/usr/spool/news' or die "Can't cd to spool: $!\n"
(or は優先順位が違うだけで || と同じ)
以降Rubyや
https://docs.ruby-lang.org/ja/latest/doc/spec=2foperator.html#or
> demo || die
> demo or die
JavaScriptでも使うようになった
https://stackoverflow.com/questions/51206667/or-in-ternary-operator-using
> (a === 0 || b === 0) && console.log('aloha amigo')
(Perlよりも前にやっていた)C言語でもできたんだが、当時は使ってなかったな。
https://qiita.com/gyu-don/items/a0aed0f94b8b35c43290
> a || error(); // if(!a){ error(); } のような挙動
> a || (a = 1); // if(!a){ a = 1; } のような挙動(代入が式である言語で有効)
こういう書き方ができないのはVBぐらいじゃないか?
VBは短絡評価じゃないから、先に|| や && の右側が評価されてしまったはず
えーと、いつから自分がプログラムやってきたと錯覚していた?
552デフォルトの名無しさん
2018/09/01(土) 14:44:03.83ID:2NCbxz5b 独り舞台の全レス
553デフォルトの名無しさん
2018/09/01(土) 14:46:14.88ID:mPcVbgud あ、はい
(下らないレスは無視してるけどなw)
(下らないレスは無視してるけどなw)
554デフォルトの名無しさん
2018/09/01(土) 15:07:44.71ID:7KL6nh8i 一日中張り付いてるやべー奴
555デフォルトの名無しさん
2018/09/01(土) 16:10:37.86ID:W/mc6eBq556デフォルトの名無しさん
2018/09/01(土) 17:14:12.00ID:mPcVbgud557デフォルトの名無しさん
2018/09/01(土) 17:30:46.73ID:qlVPfHnQ558デフォルトの名無しさん
2018/09/01(土) 17:43:01.15ID:vZp6TokW 何行以上なら大規模なのか、1人で開発したら大規模と言えるのか。
シェルスクリプト環境自体がシェルスクリプトを用いた大規模分散開発の成果と言えるのかもしれない。
という夢を見た
シェルスクリプト環境自体がシェルスクリプトを用いた大規模分散開発の成果と言えるのかもしれない。
という夢を見た
559デフォルトの名無しさん
2018/09/01(土) 17:46:41.85ID:mPcVbgud >>557
ありがとう。やっぱりうちのOpenWrtでは動きそうもないね。
ありがとう。やっぱりうちのOpenWrtでは動きそうもないね。
560デフォルトの名無しさん
2018/09/01(土) 17:47:16.28ID:qlVPfHnQ >>559
なぜ?
なぜ?
561デフォルトの名無しさん
2018/09/01(土) 17:59:21.16ID:mPcVbgud >>560
最初に思ったのが、glibcではないから。
たしかuClibcだっけ?と思ったが、musl libcに変わっていた。
glibc互換らしいから動くかもしれない。
次に思ったのがCPU。うちのルータは MIPS
ここを見るとARMはあるがMIPSはないのでアウト。動かない
https://www.microsoft.com/net/download/dotnet-core/2.2
おまけでARMのコアバイナリサイズ。圧縮状態で30MB近くある
展開したら60MB?。空き容量は10MBしかないので到底入らない。
ちなみにOpenVPNとか入れるんで10MB全部使えるわけじゃない
USBメモリを使うという裏技があるから不可能ではないが。
あとは使用メモリも気になるな。高スペックルータなので、
128MB"も"搭載されているが、どれくらいメモリ食うんだろうね
最初に思ったのが、glibcではないから。
たしかuClibcだっけ?と思ったが、musl libcに変わっていた。
glibc互換らしいから動くかもしれない。
次に思ったのがCPU。うちのルータは MIPS
ここを見るとARMはあるがMIPSはないのでアウト。動かない
https://www.microsoft.com/net/download/dotnet-core/2.2
おまけでARMのコアバイナリサイズ。圧縮状態で30MB近くある
展開したら60MB?。空き容量は10MBしかないので到底入らない。
ちなみにOpenVPNとか入れるんで10MB全部使えるわけじゃない
USBメモリを使うという裏技があるから不可能ではないが。
あとは使用メモリも気になるな。高スペックルータなので、
128MB"も"搭載されているが、どれくらいメモリ食うんだろうね
562デフォルトの名無しさん
2018/09/01(土) 18:00:20.51ID:mPcVbgud 訂正
× おまけでARMのコアバイナリサイズ。圧縮状態で30MB近くある
○ おまけでARM版の.NET Coreランタイムのバイナリサイズ。圧縮状態で30MB近くある
× おまけでARMのコアバイナリサイズ。圧縮状態で30MB近くある
○ おまけでARM版の.NET Coreランタイムのバイナリサイズ。圧縮状態で30MB近くある
563デフォルトの名無しさん
2018/09/01(土) 18:02:43.20ID:7GOU6dDm ちょっと理解に苦しむんだが、ルーターで大規模開発するわけ?
564デフォルトの名無しさん
2018/09/01(土) 18:02:59.63ID:/wwW4VSs ちっちゃいコマンドを一杯つくって
そのコマンドを一杯組み合わせてどんどんコマンド作るのには最適
標準入出力でひたすら組み合わせて使えるのがベストだ
一つのシェルスクリプトでたくさんの機能の処理を書こうというのが
そもそもの間違い
単体のシェルスクリプトで完結して使える簡単な機能を作る
わかりましたか
そのコマンドを一杯組み合わせてどんどんコマンド作るのには最適
標準入出力でひたすら組み合わせて使えるのがベストだ
一つのシェルスクリプトでたくさんの機能の処理を書こうというのが
そもそもの間違い
単体のシェルスクリプトで完結して使える簡単な機能を作る
わかりましたか
565デフォルトの名無しさん
2018/09/01(土) 18:08:41.62ID:mPcVbgud566デフォルトの名無しさん
2018/09/01(土) 18:10:57.55ID:7GOU6dDm >>561
じゃあmonoで良いやん
じゃあmonoで良いやん
567デフォルトの名無しさん
2018/09/01(土) 18:14:25.88ID:eduRMzlf シェルしか書けないジジイが必死だな
568デフォルトの名無しさん
2018/09/01(土) 18:19:40.37ID:mPcVbgud >>564
いやわからんw
「簡単な機能」とはどういう機能なのか
理論的には、たくさんのコマンドを組み合わせるだけという
シェルスクリプトに適した単純な機能であっても、その量が多くなれば大規模になるだろう?
「機能の種類や複雑さ」と「機能の量」は別々の概念だ
俺にとっては大規模といったら10万行超えるぐらいのものなんだが、
その前提でいいのであれば1000行程度は小規模だろう。だがその
1000行でもライブラリあったほうが楽になるだろうと用意に予測できる
例えばgit subtreeが865行だな
https://github.com/git/git/blob/master/contrib/subtree/git-subtree.sh
いやわからんw
「簡単な機能」とはどういう機能なのか
理論的には、たくさんのコマンドを組み合わせるだけという
シェルスクリプトに適した単純な機能であっても、その量が多くなれば大規模になるだろう?
「機能の種類や複雑さ」と「機能の量」は別々の概念だ
俺にとっては大規模といったら10万行超えるぐらいのものなんだが、
その前提でいいのであれば1000行程度は小規模だろう。だがその
1000行でもライブラリあったほうが楽になるだろうと用意に予測できる
例えばgit subtreeが865行だな
https://github.com/git/git/blob/master/contrib/subtree/git-subtree.sh
569デフォルトの名無しさん
2018/09/01(土) 18:23:56.55ID:+0pKcVMh 理論とか言い出しちゃった
570デフォルトの名無しさん
2018/09/01(土) 18:38:06.88ID:+0pKcVMh 誰が提唱した理論だろう?
謎理論?
謎理論?
571デフォルトの名無しさん
2018/09/01(土) 18:42:01.49ID:mPcVbgud シェルスクリプトが大規模に向いてないという理由を
誰も答えてくれないので俺が書いてやる
まず前提としてどんな言語であっても、言語だけでは大規模開発を
するのは無理RubyでもC#でもJavaであってもだ。
少し前まではJavaScriptも大規模開発に向かないと
言われていたはずだ。それが解決したのは何故か?
大規模開発をするのに必要なのは言語じゃない。フレームワークとライブラリだ。
どんな言語でも大規模開発するためにフレームワークとライブラリを使うだろう?
逆にこれらを使わないで大規模開発なんて到底無理だろ?
JavaScriptが大規模開発できるようになったのも、
フレームワークとライブラリが補完されたからだよ。
シェルスクリプトも昔のJavaScriptと同じ状況。
といっても俺はシェルスクリプトで大規模開発をすることには興味がなく、
せいぜい数千行程度の中規模ぐらいまでしかやることはないだろう。
何故かと言うと単にシェルスクリプトに適した内容で
10万行を超えるようなものが思いつかないからだ
だがそれはシェルスクリプトで大規模開発ができないということにはならない。
実際USPとかいうので、無印良品や東急ハンズのシステムが作られている(いた?)だろ
http://www.atmarkit.co.jp/news/200909/07/lltv03.html
https://www.hands-lab.com/tech/entry/62.html
(適してないとは思うが)足りない部分を補えば大規模開発だってできることは証明済みだよ
まとめると、現在のシェルスクリプトが大規模開発に向いてないのは
フレームワークやライブラリが不足しているから。
俺がシェルスクリプトで大規模開発をやらないのは、
シェルスクリプトが適した内容で大規模なものを思いつかないから。
それはそれとして中規模を小規模にするためのフレームワークやライブラリは欲しい。
誰も答えてくれないので俺が書いてやる
まず前提としてどんな言語であっても、言語だけでは大規模開発を
するのは無理RubyでもC#でもJavaであってもだ。
少し前まではJavaScriptも大規模開発に向かないと
言われていたはずだ。それが解決したのは何故か?
大規模開発をするのに必要なのは言語じゃない。フレームワークとライブラリだ。
どんな言語でも大規模開発するためにフレームワークとライブラリを使うだろう?
逆にこれらを使わないで大規模開発なんて到底無理だろ?
JavaScriptが大規模開発できるようになったのも、
フレームワークとライブラリが補完されたからだよ。
シェルスクリプトも昔のJavaScriptと同じ状況。
といっても俺はシェルスクリプトで大規模開発をすることには興味がなく、
せいぜい数千行程度の中規模ぐらいまでしかやることはないだろう。
何故かと言うと単にシェルスクリプトに適した内容で
10万行を超えるようなものが思いつかないからだ
だがそれはシェルスクリプトで大規模開発ができないということにはならない。
実際USPとかいうので、無印良品や東急ハンズのシステムが作られている(いた?)だろ
http://www.atmarkit.co.jp/news/200909/07/lltv03.html
https://www.hands-lab.com/tech/entry/62.html
(適してないとは思うが)足りない部分を補えば大規模開発だってできることは証明済みだよ
まとめると、現在のシェルスクリプトが大規模開発に向いてないのは
フレームワークやライブラリが不足しているから。
俺がシェルスクリプトで大規模開発をやらないのは、
シェルスクリプトが適した内容で大規模なものを思いつかないから。
それはそれとして中規模を小規模にするためのフレームワークやライブラリは欲しい。
572デフォルトの名無しさん
2018/09/01(土) 18:46:31.18ID:IN1XIdeB 休日は議論が捗りますね
573デフォルトの名無しさん
2018/09/01(土) 18:46:41.92ID:/wwW4VSs コマンドラインインタープリタを自動化したもんを
シェルスクリプトとというの
頭悪いバカのみんな分かった?
頭悪いバカは用途がわかってない、、、
シェルスクリプトとというの
頭悪いバカのみんな分かった?
頭悪いバカは用途がわかってない、、、
574デフォルトの名無しさん
2018/09/01(土) 18:49:33.52ID:/wwW4VSs たとえばなこのスレにいるような
コマンド叩ける程度の知能しかないオペレーターみたいなヤツが
シェルスクリプトだったらいっぱい自動でコマンド叩けると
必死に主張してるワケ
コマンド叩ける程度の知能しかないオペレーターみたいなヤツが
シェルスクリプトだったらいっぱい自動でコマンド叩けると
必死に主張してるワケ
575デフォルトの名無しさん
2018/09/01(土) 18:55:47.33ID:mPcVbgud お、今気づいたが、git subtreeってそのオプションの多さに比べて、
コードが少し少ないんじゃないか?と思ったら、
https://github.com/git/git/blob/master/contrib/subtree/git-subtree.sh#L11-L33
OPTS_SPECを定義して、git rev-parse --parseopt つかって
何やらオプションを正規化してるんだな
gitにこんな機能があったとは
とは言え、劇的にコードが減ってるわけじゃないから
これなら http://docopt.org/ の方が優れてるな
コードが少し少ないんじゃないか?と思ったら、
https://github.com/git/git/blob/master/contrib/subtree/git-subtree.sh#L11-L33
OPTS_SPECを定義して、git rev-parse --parseopt つかって
何やらオプションを正規化してるんだな
gitにこんな機能があったとは
とは言え、劇的にコードが減ってるわけじゃないから
これなら http://docopt.org/ の方が優れてるな
576デフォルトの名無しさん
2018/09/01(土) 18:59:35.38ID:mPcVbgud577デフォルトの名無しさん
2018/09/01(土) 19:05:44.41ID:/wwW4VSs シェルスクリプトでじかに文字列の処理なんかしないからな
sedやawkを使っても
頭が致命的に悪いとコレもシェルスクリプトで書いてやりたいとなるわけか
なるほどな
sedやawkを使っても
頭が致命的に悪いとコレもシェルスクリプトで書いてやりたいとなるわけか
なるほどな
578デフォルトの名無しさん
2018/09/01(土) 19:08:19.43ID:jmAsDv6y なんの話してたんだっけ?
579デフォルトの名無しさん
2018/09/01(土) 19:09:38.27ID:mPcVbgud サマータイムスレにもいた半角使いのキチガイ野郎かな?
みんな、こいつの味方するの?w
みんな、こいつの味方するの?w
580デフォルトの名無しさん
2018/09/01(土) 19:10:41.10ID:mPcVbgud581デフォルトの名無しさん
2018/09/01(土) 19:17:26.68ID:HKyHRnHf >>568
その理論について詳しく教えてくれw
その理論について詳しく教えてくれw
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【サッカー】運命のW杯抽選会、NHK総合が生中継&DAZNが無料ライブ配信! 今夜 12月5日(金)26時~ [阿弥陀ヶ峰★] ★2 [阿弥陀ヶ峰★]
- ひろゆき氏、日中対立に 「結局、人口というのは国力なので。10億人以上いる国に、1億2000万人で対抗可能であるというのが間違い」 [冬月記者★]
- 渡邊渚「性を売ってるくせに」批判に反論 幻滅「これが涛本の現状だよbネー」「『渾身bフ下着!』といb、ような意味でb竄チてない」★2 [Ailuropoda melanoleuca★]
- 渡邊渚さん脅迫か 写真集に包丁置く写真投稿 30代女性書類送検 渡邊さん「外に出るのも怖く身の危険を感じる」 [ひかり★]
- 【生成ポルノで初】AI生成の児童ポルノ画像の所持疑いで元教諭を初摘発… [BFU★]
- 鈴木農相、地元JAから借入金 おこめ券巡り利害誘導との批判も★2 [安倍聖帝★]
- 【NHK他】FIFAワールドカップ2026 組み合わせ抽選★2
- 【D専】
- 【ATP】テニス総合実況スレ2025 Part 213【WTA】
- 女子サッカー総合 実況 ★51
- 【DAZN/ABEMA】リーグ・アン総合 ★4
- 松山英樹 実況応援スレ No.663
- 【01:45NHK~】サッカーW杯2026グルーブ分け組み合わせ抽選会いよいよスタート! [339712612]
- 【NHK/DAZN/YouTube】FIFAワールドカップ2026組み合わせ抽選★1
- 【風向き】ヤバい!高市が導入を検討する「防衛特別所得税」、ネトウヨらもまさかの反対の大合唱。。さすがに国民を舐めすぎたか? [219241683]
- ソシャゲすぐ落ちるんじゃがエンジニアとか詳しい人きて(`;ω;´)
- 【実況】サッカーワールドカップ組み合わせ抽選会
- 【動画】日本人さん、バリ島の土産物店で堂々万引きwwwwwwwwwww [834922174]
