TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼
自然言語処理スレッド その4
ふらっと C#,C♯,C#(初心者用) Part137
Borlandにはやられた...
人工知能ディープラーニング機械学習の数学 ★2
開発工数を大幅削減できた言語は存在しない
エスパーが質問に答えるスレ
Kinect ハック 2台目
逆コンパイラCodeReverseを作る
[RPA]PC自動化技術総合スレ[効率化] Part.6
【魔法】リリカル☆Lisp【言語】

シェルスクリプト総合 その29


1 :2018/09/21 〜 最終レス :2019/05/19
シェルスクリプトに関する総合スレッドです。

全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。

前スレ:
シェルスクリプト総合 その28
http://mevius.2ch.sc/test/read.cgi/tech/1532397676/

2 :
お約束
・特記なき場合、Bourne ShellもしくはPOSIX準拠のsh可換シェルが既定です
 つまりシバンは#! /bin/shです。
 他のシェル(bash, zsh, ksh, (d)ash, yash, posh, fish, (t)csh)などの専用機能に依存する場合は明示しましょう。
  OS X, GNU/Linuxユーザーは/bin/shの実体がbashなので*特に*注意(自覚なきbashism---シバンが#!/bin/shなのにbashに依存する構文を使っていませんか?)。
   ただしDebian, Ubuntuなどでは/bin/shの実体はPOSIX sh互換のdashですのであまり気にしないでも大丈夫です。
  FreeBSDユーザーは/bin/shの実体がashなので注意。
  Solaris, OpenBSDユーザーは/bin/shの実体がkshなので注意。
 csh/tcshでのシェルスクリプトは*まったく推奨しません*。
  (参考URL: http://www.speech-lab.org/~hiroki/csh-whynot.euc
・POSIXに準拠しましょう
 有用なリンクはhttps://en.wikipedia.org/wiki/POSIXにまとめられています。
 最新の仕様はこちらへ: http://pubs.opengroup.org/onlinepubs/9699919799/
  (左上の「Shell & Utilities」から各コマンドやファイルの仕様を参照することができます)
・Version 7 UNIXのsh(1)に一番近いのはOpenSolaris由来のHeirloom sh、次点でDebianなどに搭載されているDash shell
  Heirloom sh: http://heirloom.sourceforge.net/sh.html
  Dash shell: http://gondor.apana.org.au/~herbert/dash/
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります
 Manページや各種リンク(http://pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.htmlなど)を見ましょう。
 apropos(1)ないしはman(1)の-kオプションでそれらしい単語による簡単な検索もできます。
・ワイルドカードは正規表現ではありません。
 正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆうな

3 :
初心者へのアドバイス
・適した道具を判断するのも頭の重要な使い方。
 シェルスクリプトよりもPerlまたはPythonの方が適した処理にはそちらを使いましょう。
・知らないコマンドが出てきたらman(1)を引きましょう。
・思い通りに動かないときは、まずはsh(1)の-xオプションでトレースしましょう。

回答者への注意事項
・相手がシェルスクリプトでの処理方法を質問しているのにもかかわらず、よく知りもせずに、「そういうのはPerl, Python使え」と回答するのはやめましょう。
 安易にPerlやPythonに逃げずに小さなコマンドを組み合わせシェルスクリプトで処理するのが頭のいいやり方。
・質問に対して問題が間違ってるといちゃもんをつけるのも避けましょう。

4 :
次スレを立てる時は>>1の本文の先頭に以下を追加して下さい。
!extend:on:vvvvv:1000:512

という注意書きを>>1の先頭に追加してください。

5 :
そして注意書きに従ってください。


…回線切って首釣ってくる

6 :
age

7 :
>>5
ワロタ

つーか今時回線なのかw

8 :
回線って言葉の定義によるが、今どきの優先での光とかでも回線とは言う。光回線とかね。

9 :
優先じゃなくて有線

10 :
printfのフォーマットについてなんだけど
printf '%05d' '33' → 00033
みたいなゼロ埋めってどのシステムでもサポートされているのかな。
%5dみたいな記述はPOSIXの仕様書に在ったから確実だけど
ゼロ埋めフラグについて何の言及もしてないっぽいんだよね。
%gとかと違って「実装を要求しない」とも言っていないし。

11 :
あ。自決。
よーく読んでもっつーか普通に書いてあったわ。

12 :
結論を書いてから死ぬんだ

13 :
自決か・・・

14 :
>>11
なんて書いてあった?
シェルのバージョンによっては8進数しか
受け付けなかったりするんだよねー

15 :
シェルスクリプトで数値を扱うのがおかしい。シェルスクリプトは文字として認識しているから、もともと数値の取り扱いは気をつけないといけない。

16 :
そんな事言われましても、シェルスクリプトに
数値計算の機能がありますし

17 :
>>16
シェルスクリプトそのものにはもともと計算機能は存在しないよ。

shは計算コマンドでの対応しかできない。

18 :
>>14
なんか勘違いしてね?
俺が言ってるのは0フラグ。
pubs.opengroup.org/onlinepubs/9699919799/utilities/printf.html#tag_20_94_13

ちなみにprintf '%b' '\0ddd'はPOSIXでは8進数しか定められてない
のでその「8進数しか受け付けない」システムは正当。

19 :
>>17
$(())があるじゃない
exprやbcはまあコマンドだけど。

20 :
もともと

21 :
今のシェルスクリプトの話をしろよ
需要に応じて変わるんだよ

22 :
    〃〃∩  _, ,_
     ⊂⌒( つД´) < ヤダヤダ
       `ヽ_ ノ ⊂ノ
              ジタバタ

23 :
昔はよく expr コマンドを使ったものぢゃよ

24 :
exprは(シェルによるけど)grepみたいな正規表現が単語に対して使えるからすごく重宝してた。
でも最近はそもそもそういう非可搬な機能を使うならbashの[[ <str> ~= "/regexp/" ]]でいいやってなってる。

25 :
http://mevius.2ch.sc/test/read.cgi/tech/1535194140/l50
わざわざひと月経ってから重複立てた理由は?

26 :
そっちには特定のOSでしか動かないで存在しないのが入ってるからじゃね。特定のOSの板かスレが相応しいのだろう

27 :
ああ、特定のOSでしかでもないのか。じゃ、すでに専用スレあるのでってとこか。言葉が違うのに混ぜることもないだろしな

28 :
特定のOS?

29 :
月経の文字に反応

30 :
受け取った文字列が想定しているものかを判定する場合で
「特定の種類の文字のみ構成されている」かを調べる方法として
↓こういうのを考えてみた
test "$VAR" = "${VAR#*[^a-z]}"
成功したらVARは[a-z]のみで構成されているということ。
あと一応POSIX 2018にも準拠してる。

grep(1)などを用いて処理するより早いと思うんだが
最近のPCは処理が速すぎて今一違いが分からんw

31 :
case $VAR in
 *[^a-z]*) ;; # a-z以外の文字がある
 *) ;; # a-zのみで構成
esac

でいいやろ?
置換処理しないから更に速いはず

32 :
foo() {
echo 1
echo
echo
echo
}
a="$(foo)"
echo "$a"


ってやったら、最後に改行がいくつあっても消えちゃうんだけどさ
aに改行ごと入れる方法ない?bash依存なしで

33 :
>>32
a="$(foo; echo @)"
a="${a%@}"

34 :
$ ( a="a,,b,,c"; IFS=","; set -- $a; echo $3; )
b

$ ( a="a b c"; IFS=" "; set -- $a; echo $3; )
c


なんでや?

35 :
なんでやと言われましても…

36 :
空(くう)を理解出来ないタイプの馬鹿って結構いるんだよな

37 :
スペース か カンマ かによって
挙動が違うっておかしいだろ

38 :
挙動は同じだけど?

39 :
わざわざそうしてるってなんで理解できないんだろかな

40 :
>>38>>39 で矛盾してますけど?

41 :
同じ挙動してるじゃん?

42 :
>>40
別人だからな。なんで同一視してんのかわからんな

43 :
あぁ、ブラウザで見るとスペースが1個になるのねw


$ ( a="a<カンマ2個>b<カンマ2個>c"; IFS=","; set -- $a; echo $3; )
b

$ ( a="a<スペース2個>b<スペース2個>c"; IFS=" "; set -- $a; echo $3; )
c


これで意味分かるやろ?

<カンマ2個>は ,, のこと
<スペース2個> も同様

44 :
やっぱり、元のヤツか。>>40といい独特というか視野が狭いというか思考理解力が狭いな
>>36が答えでもう終わってるだろうに

45 :
あからさまに挙動見て仕様 理解できないとか・・・

46 :
シェルスクリプトにヒアドキュメントって
"HERE" でも 'HERE' でも変数展開行われないのか・・・
"HERE" は HERE と同じだと思っていた

47 :
なんで展開されると思えるのか、そこが少し不思議

48 :
>>47
シェルスクリプトだけじゃなくて、他の言語も勉強するといいですよ

49 :
>>48
なんで俺に?

50 :
> If no part of word is quoted, all lines of the here-document shall be expanded for parameter expansion, command substitution, and arithmetic expansion.
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_07_04

\HERE とか
HE"R"E とか
""HERE でもいいんだな

51 :
a = <<"EOT"

EOT

Ruby では、" " なら、バックスラッシュ・式展開が使える。
' ' なら使えない

52 :
ヒアの中身の話をしてるんじゃないのか?
なんだかrubyとかやってる人ってとんちんかんな人多いよなあ

53 :
>>47に対して>>48の意味が>>51だったてことだろ。意地はるなみっともない

54 :
>>53
ますます意味不明
なんでルビーがでてくるし?

55 :
あー、もしかして、ヒアドキュメントが
他の言語にもあるって知らない人かな?
もう少し勉強したほうが良いよ

56 :
スレタイ読めない人がいるな

57 :
この件は別に他の言語での知識経験から故にで全然おかしくないだろう
単にそう思ったのはそうだったのかで済む話でしかないだろうに。何を拘っているんだか

58 :
環境によって頭を切り替えられない馬鹿だという告白ってこと?
それならまあ納得なのだが。

59 :
なにを言っているんだか。単に「よく」調べないで経験則で思い込んでいたってだけだろう。そういう人もいてもおかしくはないだろう
誰かのように、どうも最初から馬鹿にしたいだけなら違うんだろうけどな

60 :
「普通は」他の言語の知識があるわけで、
他の言語がそうだったから、シェルスクリプトでもそうだと
思ったのに違っていて驚いたってだけの話だろ

なんで言語が変わったら、0から言語仕様を勉強します。
以前の言語の知識は全て捨てて、最初から学び直しますってなるんだ?
文法は「知らない」 or 「間違いなく知ってる」 のどちらかしか無いはずなんです。
「他の言語がそうだったから、同じだろう」なんて思うやつなんてありえないんです。
そう考えてるのか?そんなやついないだろ。

61 :
  /\___/\
/ /    ヽ ::: \
| (●), 、(●)、 |    / ̄ ̄ ̄ ̄ ̄ ̄ ̄
|  ,,ノ(、_, )ヽ、,,   |  < まーたはじまった
|   ,;‐=‐ヽ   .:::::|    \_______
\  `ニニ´  .:::/
/`ー‐--‐‐―´´\

62 :
たかが>>46の独白(?)に何をそんなに必死になっているんだか
何かが気に食わなかったのだろうな>>46のレスの内容ではなくて

63 :
1. シェルスクリプトの仕様に文句言われて悔しい
2. 俺にとっての常識が、井の中の蛙だとばれて悔しい

どっちか

64 :
いやいやw君がなんだか。なにその読めなさはwずっと同じ人?

65 :
>>63
3.おまえがバカを晒して悔しい
だろう?

66 :
俺が>>46なんだが?

67 :
>>66
えーっ、おれが馬鹿を晒してしまったやんけっ
なにを長文で、わかりづらいネチっこい最後の部分。あんたのスタンスなんぞがわかっているのが居るんだからなにをわざわざな...もう
まあ、すまんかった、いろいろと

68 :
>>66
だからだよw

69 :
理由が書いてないものに意味はないよ。
ばーかばーかっていってるのと同じだからね

70 :
Rubyさいこおおおおおおお
シェルはほろびろおおおお

71 :
やれやれ、延長戦か。昨日ので終わってれば普通のまともな人に見えたのに。

72 :
ジョブって使ったことあります?
fgとかbgぐらいはあると思うんですが、
そういうのってコマンドラインじゃなくて
シェルスクリプトで使うことって考えられますかね?

73 :
俺はないけど
単に経験が浅いだけかも知れない

ただ,似非の非同期処理として,ネットワーク資源をwgetなんかで取得しているジョブと同時に
その資源に依存しない種々の作業を同時に実行して,
その資源が必要になった段階でwaitコマンドでwgetの終了を待つ,
みたいなことはよくやる。

74 :
USR1シグナルって受け取ったら
trapしてても死んじゃうの?

75 :
いいや
シグナルに対してハンドラが無い場合死ぬのであって、trapしてんだか死なない

76 :
いや死ぬんだが? これ実行してみ

[main.sh]
#!/bin/sh

trap 'echo USR1' USR1

for i in $(seq 1 10); do
./child.sh "$$" &
done
wait

[child.sh]
#!/bin/sh

sleep 0.1
kill -USR1 "$1"

77 :
ただの正常終了、main.sh処理全部終わりましたでしょがー
意図した動きになるようには書いてないだけでしょう

78 :
>>77
実行すらしてないようだから、実行結果書いておきますねw

$ ./main.sh
USR1
USR1
$ ./child.sh: 4: kill: No such process

./child.sh: 4: kill: No such process

./child.sh: 4: kill: No such process

./child.sh: 4: kill: No such process

./child.sh: 4: kill: No such process

./child.sh: 4: kill: No such process

79 :
なにそれ。性根の悪いヤツだな
man bashでwait及びシグナルんとこ読みなさい

80 :
>>79
はいどうぞ。

wait [n ...]
n が与え
られていない場合には、現在アクティブな全ての子プロセスを wait し、 返却ステータスは 0 となります。


疑問点があれば受け付けますよ?

81 :
なんか続きそうでメンドくさくなった
ただの正常終了、「main.sh処理全部終わりました」
だよ。
wait
じゃなくて
until wait
do
:
done
とかだろう。どう意図した動きにしたいのか知らんけど、間違いは

82 :
マジで性根の悪いヤツだった。言ったことやってから言えよな、もう

83 :
> 言ったこと
ってどれ?w

84 :
「シグナルんとこ読みなさい」だよ。くそがw
よく笑ってるな。まじでなんなん?ただのプライドが高いアレか

85 :
どこまで本気なのかなあ。
小学生が頭の悪そうななぞなぞで得意がってるとか、そういう雰囲気を感じる。
とりあえず
「シグナルで死んだんなら、なんで echo が実行されてんだよ!」
とつっこんでおくよ。

86 :
シグナルで死んでるんじゃなくて全てのプロセスが終了する前に wait から抜けちゃうってことだな。
理由はシグナル受け取っているからだが。

87 :
Ruby のSignal モジュールを使え

割り込み : Ctrl + C

Signal.trap("INT") { |signo| puts Signal.signame(signo) }
Process.kill("INT", 0)

88 :
スレ違い

89 :
ちゅうかお題違い

90 :
for i in *; do
echo "$i"
done

これって必ずソートされるの?

91 :
POSIXでソートすることになってる

92 :
へー、取得したいのは最初の一個だけでいいんだけど、
その最初の一個は、小さいものになるんか

というか、一個だけ取得する速い方法ないかな?
でもソートしてるなら、結局内部で全部読み込むのか?

93 :
へんなの居付いたな

94 :
そりゃ俺が立てたスレだしなー

95 :
ls -1U とか?

96 :
1.txt, 2.txt, 3.txt と3つファイルがあるディレクトリでecho * したら
これらのファイルがでてくるのに空のディレクトリで、
echo * したら * と表示されるのなんで?
何も表示されないでほしいんだけど、この仕様、なにか便利なの?

97 :
echoがやってるんじゃないし...

98 :
エコーさんはね、もらったものをエコーするだけだってね、ママがいってたの

99 :
cat *
とかで困るだろうに

100 :
echoがやってるかどうかは論点じゃないしw


100〜のスレッドの続きを読む
Google NaCl プログラミング 2mol
C++相談室 part142
【コメント】doxygen【コンソメ】
オブジェクト指向は愚かな考え。この世は計算式 ★3
くだすれPython(超初心者用) その47【Ruby禁止】
WindowsDDK各種についてのスレ
Git 16
BrainFuck Part.3 <[+-.,]>
クラス名・変数名に迷ったら書き込むスレ。Part28
クラス名・変数名に迷ったら書き込むスレ。Part28
--------------------
別れようってほどじゃないけど恋人に引いた瞬間150
【スマホ】分離プラン時代にiPhoneは売れなくなるのか
糖尿、糖尿病気味の人のためのレシピ教えて!
☆☆★裏2ちゃんねるへの入り方
【武豊】東海道線名古屋口スレ62【米原】
−ダイの大冒険−ヒュンマ中心恋愛雑談スレ2
【part637】  男性に質問  【紳士的な回答で】
台湾プリペイドSIMスレ Part6
【欧米】お前ら「白人」に生まれ変われるとしたら何処の国が良い [816970601]
CR009 RE:CYBORG Part43
家を建てる予定の人が集まるスレ 105軒目
【アジア大会】 サッカー男子日本、ベトナムに敗れ2位通過[08/19]
【総合】ドラゴンクエストビルダーズ part153【DQB】
大河あるある
【GMO】新外為オプション悲喜こもごも★920【クリック】
関西学生アメリカンフットボールDIV.2総合
なぜ、国民は「いだてん」を見ないのか?
タワーマンションの上層階に住んでる人ってにエレベーターで降りるのカッったるく無いの?降りるまで15分位かかりそうなんだが [258620246]
メゾン・ニッチ系フレグランスを語ろう
肴24188
TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼