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

■ このスレッドは過去ログ倉庫に格納されています
2019/10/25(金) 00:08:45.53ID:6btPTvif
シェルスクリプトに関する総合スレッドです。

全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。

シェルスクリプト総合 その31
https://mevius.5ch.net/test/read.cgi/tech/1565446670/
2019/10/25(金) 00:09:51.40ID:6btPTvif
・特記なき場合、POSIX準拠シェルが既定です
 POSIX準拠シェルとBourneシェルの区別はついていますか?BourneシェルはUNIXで過去広く使われたシェルで
 多くの亜種が存在します。Bourneシェルの後継で標準化されたものがPOSIX準拠シェルです
  参考 https://unix.stackexchange.com/questions/145522/
 POSIX準拠シェルは(d)ash, bash, zsh, (m)ksh, yash, posh, (p)boshです
 特定のシェル(特にPOSIX準拠シェルではないfish, (t)csh等)の専用機能に依存する場合は明示しましょう
・デフォルトシェルのシバンはBourneシェル時代からの伝統で#!/bin/shを使用します。ただしその実体はOSによって様々です
  Debian,Ubuntu … dash
  CentOS … bash
  FreeBSD … ash
  Solaris,OpenBSD … ksh
  macOS … 改変版bash
  android … mksh
 自覚なきbashism、シバンが#!/bin/shなのにbashに依存する構文を使っていませんか?#!/bin/shを使うならシェル依存は厳禁です
 macOSのbashはSingle UNIX Specificationに準拠するために改変されており一部動作が異なるので注意しましょう
・Bourneシェルは既にレガシーです
 歴史的資料 https://www.in-ulm.de/~mascheck/
 Bourneシェル≒Version 7 UNIXのshに一番近いのはOpenSolaris由来のHeirloom Bourne Shell、次点でSchily Bourne Shellのoboshです
  Heirloom Bourne Shell: sh http://heirloom.sourceforge.net/sh.html
  Schily Bourne Shell: obosh http://schilytools.sourceforge.net/bosh.html
・POSIXに準拠しましょう
 有用なリンクは https://en.wikipedia.org/wiki/POSIX にまとめられています
 最新の仕様はこちら http://pubs.opengroup.org/onlinepubs/9699919799/ (左上の「Shell & Utilities」から)
・csh/tcshでのシェルスクリプトは*まったく推奨しません*
  参考 http://www.speech-lab.org/~hiroki/csh-whynot.euc
・Linux/UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。Manページや各種リンクを見ましょう
 aproposやman -kでそれらしい単語による簡単な検索もできます
・ワイルドカードは正規表現ではありません
 正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆうな
2019/10/25(金) 00:10:25.47ID:6btPTvif
関連スレ

【Bash】Windows Subsystem for Linux【WSL】6
https://mao.5ch.net/test/read.cgi/linux/1560665525/

Bashでプログラミング [転載禁止](c)2ch.net
https://mao.5ch.net/test/read.cgi/linux/1443885102/

シェルスクリプト総合 その28
https://mevius.5ch.net/test/read.cgi/unix/1533154936/

zsh その7
https://mevius.5ch.net/test/read.cgi/unix/1337844883/

【POSIX】UNIXプログラミング【BSD】 [転載禁止](c)2ch.net
https://mevius.5ch.net/test/read.cgi/unix/1443103705/
2019/10/25(金) 00:31:55.29ID:pN2Np6rx
隣で仕事してる他社のチームが、新人にコマンドプロンプトのことをMS-DOSって教えてて笑える
2019/10/25(金) 02:33:05.14ID:IsBuDbrd
業界内で技術用語を正確に把握している人が果たして何人いるんだろうか?
2019/10/25(金) 15:16:28.60ID:L9QL6FGO
コマンドプロンプトのことをなんと教えるか?

× MS-DOSのようなもの
○ ハドソンのゲーム、バニーガール殺人事件のようなもの
https://middle-edge.jp/articles/bFwpM
2019/10/25(金) 18:14:14.63ID:ggZuLyhL
Win9xまではコマンドプロンプトのアイコンがMSDOSだったんだぜ
8デフォルトの名無しさん
垢版 |
2019/10/25(金) 19:44:43.63ID:f89Z34lq
あれって MS-DOS プロンプトって名前じゃなかった?
Windows NT の方はコマンドプロンプト。
2019/10/25(金) 21:05:38.68ID:AWtm0G4L
先輩がコマプロとか言っててキモかったな(´・ω・`)
2019/10/25(金) 21:16:19.65ID:Qd2+OiXZ
そういう誰も効かない変な略し方ってどうやって生まれるんだろうね?
俺の知り合いは、AMDをアーマーデーとか言ってた。なんで伸ばすん?
11デフォルトの名無しさん
垢版 |
2019/10/25(金) 23:38:51.04ID:9ZGj0mXw
ドイツ語読みだとしてもマーがおかC
2019/10/25(金) 23:59:50.22ID:6xV0MpQs
そういえばもうDOSプロンプトって言い方しなくなったな
2019/10/26(土) 00:00:29.42ID:hrL9FWKp
XP以降しか使ったことがないって人も増えたからね
2019/10/26(土) 16:02:34.81ID:5U6kcXeJ
MS-DOS の話をしても現在の Windows で再現できないという理由で嘘つき呼ばわりされる。
15デフォルトの名無しさん
垢版 |
2019/10/26(土) 16:33:49.92ID:+M+pJ73c
TRUE=$([ 0 = 0 ];echo $?)
FALSE=$([ ! $TRUE ];echo $?)

FLAG=$TRUE or $FALSE


↑クソコード

理由
true / false を使えばいい
true / false がない環境があるかもという理屈なら、 [ がない環境もあるかもと考えろ
set -e のときに動かない
[ ! $FALSE ]; echo $? が 1($FALSEと同じ値)を返すことに気づいていない
サブシェルを使うのもアホらしい

たったこれだけのコードに、こんだけのツッコミができるとはw
16デフォルトの名無しさん
垢版 |
2019/10/26(土) 16:35:45.72ID:+M+pJ73c
TRUE=0
FALSE=1

と書いたほうが遥かにマシだが、
これでも、[ $TRUE ] も [ $FALSE ] も共に 0(成功)を返すので
なんだかなーって感じw
17デフォルトの名無しさん
垢版 |
2019/10/26(土) 16:38:37.76ID:+M+pJ73c
>>15は [ ! $TRUE ] ← こういうコードを書いてますが、
つまりこういうことですよ

FLAG=$FALSE

if [ $FLAG ]; then
 echo ここが実行されるwww
fi
18デフォルトの名無しさん
垢版 |
2019/10/26(土) 16:49:43.23ID:+M+pJ73c
変数($FLAG)に、0 or 1 を入れてる人は、

こういう書き方をしたいかんのやで
if [ $FLAG ]; then
if [ ! $FLAG ]; then

if [ $FLAG -eq $TRUE ]; then とか
if [ $FLAG -ne $TRUE ]; then って書かないといかん
2019/10/26(土) 17:19:51.21ID:swDBEFOl
if $FLAG ; then

書き方も知らんらしいw
20デフォルトの名無しさん
垢版 |
2019/10/26(土) 20:30:57.76ID:+M+pJ73c
0: コマンドが見つかりません

www
21デフォルトの名無しさん
垢版 |
2019/10/26(土) 21:19:29.63ID:axNoNf0W
https://stackoverflow.com/questions/2953646/how-can-i-declare-and-use-boolean-variables-in-a-shell-script
22デフォルトの名無しさん
垢版 |
2019/10/26(土) 21:55:28.23ID:NL9ts++5
>>21
Mikuの回答とやらで混乱しすぎててわろたw

ま、普通考えて、変数の内容を実行するのは危険だわな
2019/10/26(土) 23:37:13.88ID:9r5pzvRl
いつものとっちゃんが来てたのか
24デフォルトの名無しさん
垢版 |
2019/10/26(土) 23:42:04.85ID:Mu/CRk1W
0: コマンドが見つかりません
を確かめようと、WSLで実行したらエラー無く実行されたw

/mnt/c/WINDOWS/system32/0
というファイルが有る。

サイズゼロだから問題ないが、なんだこれw

ちなみに1はないのでエラーになる
2019/10/27(日) 12:52:55.51ID:HgLbCoih
>>9
DECのVAX上で動くシェルスクリプトのようなものでコマプロってあったな
先輩からはコマンドプロシジャーの略って聞いたけど
今調べると「DCL および MCR コマンド言語インタプリタ」って言うのっぽい
適当にぐぐって出てきたPDFに載ってるそれらしい用語だけどさ
20年以上前の話だ、なつかしい・・・
2019/10/27(日) 23:45:43.77ID:seZQk3at
質問スレでこっちでやれってレスもらったのできました。
そのまま同じ書き込みします。

リモートで最新の1つを残してログを削除したいです。
$ ssh host 'rm -f `ls -1t /home/app/201910/*.log | tail -n+2`'

これを複数のディレクトリで実行しようとしたのが、
var1=201909
var2=201910
array=($var1 $var2)

for var in ${array[@]}
do
ssh host rm -f $(tail -n+2 $(ls -1t /home/app/${var}/*.log))
done
なのですが、ls -1t /home/app/${var}/*.logがローカルで実行されてしまい
ます。(ls: /home/app/201909/*.log: No such file or directory)

うまくいくようにアドバイスなどいただけるとうれしいです。
2019/10/28(月) 00:08:46.94ID:+rzOrIi/
rm以降をクウォートしてないからじゃないの?
2019/10/28(月) 00:11:36.36ID:UoBv9hmi
ssh host 'ls -1t /home/app/'${var}'/*.log | tail -n +2 | xargs rm -f'

とか
2019/10/28(月) 00:25:54.20ID:IRy7CIwD
クォートと中なら、平気、なの
2019/10/28(月) 00:28:19.46ID:XocDEeOH
この程度でいちいちbash依存しないでほしい

set -- 201909 201910

for var in $@
2019/10/28(月) 00:34:13.46ID:UoBv9hmi
for loop の場合、デフォルトでは "$@" が対象になるので

for var;do ... ;done

と書ける
2019/10/28(月) 00:48:08.79ID:h0m+PRW8
>>27
クォートしても同じでした。
ls: /home/app/201909/*.log: No such file or directory

>>28
リモート側が
/dev/tty を読み込むために開けませんでした: そのようなデバイスやアドレスはありません
を返してきました。

>>30
ハゲろ!
2019/10/28(月) 00:49:49.60ID:+rzOrIi/
>>26
ssh host 'rm -f $(tail -n+2 $(ls -1t /home/app/'"${var}"'/*.log))'

ってやればいいと思うけど
>>28の人が書いたようにパイプ使ったほうが読みやすい
2019/10/28(月) 00:50:45.01ID:UoBv9hmi
$HOME/.ssh/config に RequestTTY とか書いてない?
2019/10/28(月) 01:18:31.93ID:h0m+PRW8
考えてくれて、レスをくれてありがとうございます。

>>28>>31
for var;do ssh host 'ls -1t /home/app/'${var}'/*.log | tail -n +2 | xargs rm -f' ;done

hoge.sh: 行 38: 予期しないトークン `done' 周辺に構文エラーがあります
をリモート側が返しました。

>>33
+ ssh host 'rm -f $(tail -n+2 $(ls -1t /home/app/'"${var}"'/*.log))'
bash: 警告: command substitution: ignored null byte in input
bash: /bin/rm: 引数リストが長すぎます

>>34
リモートには~/.ssh/configは無くて、ローカルはUser、HostName、Port、
IdentityFile、ServerAliveIntervalを書いてます。

取り急ぎ報告します。エラーについては調べてみます。
2019/10/28(月) 01:42:31.88ID:h0m+PRW8
bash: /bin/rm: 引数リストが長すぎます
についてはしかたないので>>28さんのパイプを使うことにしました。

/dev/tty を読み込むために開けませんでした
についてはsshにtオプションをつけました。

`done' 周辺に構文エラーはこれから調べます。

とりあえず当初の目的は達成できました。
みんな親切にありがとうございます。
2019/10/28(月) 13:32:08.60ID:S2HNyEoD
curl ja.wttr.in/tokyo
curl cheat.sh/ls
これ以外に端末で使える便利サイトってある?
2019/10/28(月) 13:35:16.78ID:tEsfLTI+
宣伝おつ
39デフォルトの名無しさん
垢版 |
2019/10/29(火) 09:50:33.80ID:zCzSjgo7
sshを複数回動かすよりも一回で全部やらせちゃった方が効率良いような気がするんだ
2019/10/29(火) 11:14:16.19ID:2AEjd6SF
なにそれ、よさそう。
でもわたしの頭ではどうしたらよいものやら。。
41デフォルトの名無しさん
垢版 |
2019/10/29(火) 12:20:30.44ID:zCzSjgo7
forのループごとsshで引き渡せばいいじゃん。1行の長いシェルスクリプトってことね。
2019/10/29(火) 13:55:53.48ID:2AEjd6SF
まだ帰宅していないので考えただけですが、
ls | tail | rm したいディレクトリが11個あって、
ディレクトリのpwdは/home/'"$var"'/'"$i"'/ みたいに2箇所変数にしてます。
それをssh1行でループを送れるバエた方法があるますか?
2019/10/29(火) 13:59:15.42ID:2AEjd6SF
たしかにsshのループの時にいちいち
Connection to xxx.xxx.xxx.xxx closed
が出てうざかったんですよね。
2019/10/29(火) 14:00:01.92ID:gns1i7FP
ヒアドキュメントにすればいいんじゃない

#!/bin/sh

cat <<'EOS' | ssh host sh
var1=201909
var2=201910

set -- "${var1}" "${var2}"

for var
do
ls -1t /home/app/"${var}"/*.log | tail -n +2 | xargs rm -f
done
EOS
2019/10/29(火) 14:19:01.08ID:gns1i7FP
と思ったけど、リモートホストのどこかにスクリプトファイルを置いて

ssh host /path/to/script

とかやればいいんじゃないかな

> たしかにsshのループの時にいちいち
> Connection to xxx.xxx.xxx.xxx closed
> が出てうざかったんですよね。

なんでこのメッセージが表示されるんだろう…やっぱり pseudo tty を
使ってるよね
2019/10/29(火) 14:32:50.27ID:CowX2GWO
CI/CD で使う、Task Runner みたいな方が良いかも

Ruby なら、Rake を使った、Capistrano とか、
Thor とか
2019/10/29(火) 14:37:21.30ID:g8zM1lJr
rubyはけっこうです
2019/10/29(火) 15:00:21.96ID:2AEjd6SF
> ヒアドキュメント
> リモートホストのどこかにスクリプト
なるほど!それならわたしでも理解できます!

> Connection to xxx.xxx.xxx.xxx closed
これは、
ssh host 'ls -1t /home/app/'${var}'/*.log | tail -n +2 | xargs rm -f'
としたときに、
/dev/tty を読み込むために開けませんでした: そのようなデバイスやアドレスはありません
と言われてしまったので、sshに-tをつけてから出るようになりました。
サーバーのアプリが集めた写真をscpでダウンロード→
→ダウンロードした写真を削除→アプリのログを削除
って流れのスクリプトなのでやたらとConnection to xxx.xxx.xxx.xxx closedが出ます。
49デフォルトの名無しさん
垢版 |
2019/10/29(火) 15:57:57.38ID:zCzSjgo7
sshで接続する先のサーバに予めシェルスクリプト送り込んでおいてsshで実行だけするという手もあるな。
あまりにも長くて複雑な場合はその方が楽だと思う。

ただし、送り込んでから実行するまでの間に何者かによって別のファイルに置き換えられてしまったら終わりなのでその心配のない環境でしかできない。
50デフォルトの名無しさん
垢版 |
2019/10/29(火) 15:59:43.78ID:zCzSjgo7
うう。リロードし忘れて書いたら既に同じようなのが書かれている。orz
2019/10/29(火) 16:01:56.26ID:spBBwL/I
やり方は忘れたが、ローカルでgzにしたものをワンライナーで
送ってリモートに保存せずに実行っていうのをやったことがある気がする
かもしれないけど、保存していたかもしれない
5246
垢版 |
2019/10/30(水) 15:36:46.01ID:p2ffZ2o0
環境構築のChef は、サーバーに、Ruby をインストールする。
そこで、サーバーに、Ruby Script を転送して、Rubyで実行する

一方、Ansible は、サーバーに、Python をインストールしない

他にも、Capistrano, Terraform などもある
2019/10/30(水) 18:02:20.30ID:ssr4q2PY
>>52
きたーーー!!!
2019/10/31(木) 17:56:20.75ID:pBbgzdOe
cshで書いたスクリプトの途中でキーから入力をしたいんですが
なんという命令で実現できますか?
2019/10/31(木) 18:01:50.06ID:wR8wpXdO
set key_input = $<
2019/10/31(木) 19:36:28.51ID:pBbgzdOe
>>55
サンクス(´・ω・`)
2019/11/06(水) 17:06:15.24ID:4kXKpMLv
aliasってxargsじゃ使えないけど使えたらまずいんだろうか
関数ならexportすればできるけどさ
58デフォルトの名無しさん
垢版 |
2019/11/06(水) 19:12:11.78ID:wTTuQQRz
>>57
まずいとかいうわけじゃなくて、xargsは外部コマンドだよ。
例えば、俺がC言語であるプログラムを作ったとする。
俺のプログラムから、親プロセス(シェル)がなにかもわからないのに、
そのシェルで定義したメモリ内部のものを呼び出せるわけがない
59デフォルトの名無しさん
垢版 |
2019/11/06(水) 19:12:36.64ID:wTTuQQRz
関数も無理やろ?
2019/11/06(水) 19:20:58.71ID:wTTuQQRz
たたbashに関数をexportできる機能があるってのは不思議なんだよなw

まあなんか変なことしてるんだろう。で気にしてなかったけどさ、
少し試してみたら、bashからbashを起動したときには使えるが、
zshだと使えないし、bash→dash→bashの流れでも使えない。
どういう仕組なんだろう?
2019/11/06(水) 19:34:34.77ID:OvjaMqE0
echo 'Hello World' | xargs -I@ bash -c $'shopt -s expand_aliases;alias p="echo";\n p @'
2019/11/07(木) 00:18:43.96ID:dfqCliYv
func(){ echo $@;}
export -f func
echo foo | xargs func
xargs: func: そのようなファイルやディレクトリはありません
echo foo | xargs -I@ bash -c 'echo @'
foo
関数ならこうだな

xargsでaliasはbashだと無理だからtcshでやれってstack overflowで見た
2019/11/07(木) 08:59:49.28ID:C0Y8MuYI
macては動かないのでwindows使ってくださいみたいな暴論
2019/11/07(木) 11:05:05.20ID:cfhO2vSD
>>60
export -f は環境変数に
BASH_FUNC_関数名%%=関数を文字列
を設定してるだけだからじゃね。bashは起動時に環境変数にそゆのがあったら関数とし展開するから使える、その他はそんな環境変数知らんから単なる環境変数のままな感じな
dashは起動すると、その環境変数が引き継がれないからそこで断ち切られる感じかな
関数にしろaliasにしろサブプロセスに引き継ぐという考え自体がイレギュラーな感じだな
2019/11/07(木) 11:11:30.53ID:sEmiRyTj
>>64
やっぱり環境変数経由なのか?
でもちゃんと確認したんだけどなw

まさかbash以外の外部コマンドを実行するときに削除してるとか?
そしてbashの中からexport -pとかしたときは省いてるとか?
2019/11/07(木) 11:19:16.71ID:cfhO2vSD
>>65
bash -> zsh -> bash
で、bashでは関数になってるけど。zshでも環境変数には存在する
環境変数の引き継ぎってどうなってたかなあ
2019/11/07(木) 11:26:10.68ID:mwfKyddL
なんかもろにそれっぽいのがあった。dashは一般的でないような名前のは削除するらしい
https://unix.stackexchange.com/questions/498905/why-is-my-bash-func-foobar-environment-variable-unset-in-shell-subprocesses
2019/11/07(木) 11:52:29.35ID:sEmiRyTj
ようやく見れたw
envで見れるね。export使ってた。
2019/11/07(木) 11:53:35.24ID:sEmiRyTj
この変数使えば、なにか面白いことできそう。
ってか、xargsの引数にできないか?
2019/11/07(木) 11:54:11.02ID:sEmiRyTj
bashを介せば
2019/11/08(金) 00:07:00.88ID:jWGBsuvq
alias xargs='xargs '
echo *txt | xargs ll
.basurcの登録分はこれでもいける
2019/11/14(木) 12:41:11.56ID:RaS+/sOM
uucpとかって今時どういう活用法あるかな?
2019/11/14(木) 12:59:55.09ID:GaAZ8ORG
TrailBlazer でも手に入れたのか
74デフォルトの名無しさん
垢版 |
2019/11/27(水) 15:42:28.61ID:JZevxkSS
kill とtrapでソフトタイマ作ってみた。需要あるかな
2019/11/27(水) 16:34:50.24ID:KOWJoLHR
sleepと何が違うん?
76デフォルトの名無しさん
垢版 |
2019/11/27(水) 18:43:12.26ID:9SXmP3sk
SECONDSとの比較だからずれの蓄積がない。
平行処理が出来る。
2019/11/27(水) 18:48:52.87ID:KOWJoLHR
ずれの蓄積に関しては、sleepでも補正していけばなんとかなるので。
並行処理はまあそうだね。需要あるんじゃない?
コード見てなにかに使えそうなら使うかも
どこまで作り込んでるのかしらないが
78デフォルトの名無しさん
垢版 |
2019/11/28(木) 06:15:51.80ID:f/6vs/+B
シグナル発生をバックグランドで動かしシェルスクリプトのプロセスに送るのがかなめ。
2019/11/28(木) 07:03:59.17ID:uZo2jF8i
うん。それはわかるw
前に条件を満たすまで無限ループ+タイムアウト機能ってのを実装したことがあるから
結局複雑な割にタイムアウトすることはまず無いので廃止したけどさ
2019/11/28(木) 07:05:43.89ID:uZo2jF8i
もしここに書いたらレビューするかもね
内容が気に入ればだけど
81デフォルトの名無しさん
垢版 |
2019/11/28(木) 08:08:54.32ID:f/6vs/+B
いっぺんにアップできないから小出し。
#! /bin/bash

MAX_TIMER=10;

OLD_SECONDS=$SECONDS;
while true; do
cp_SECONDS=$SECONDS;
if [ $cp_SECONDS -ne $OLD_SECONDS ]; then
kill -SIGINT $$;
OLD_SECONDS=$cp_SECONDS;
fi
sleep 0.5;
done &
82デフォルトの名無しさん
垢版 |
2019/11/28(木) 08:09:31.03ID:f/6vs/+B
for ((aa = 0; aa < MAX_TIMER; aa++)); do
tim_flg[$aa]=0;
tim[$aa]=0;
#echo ${tim_flg[*]}
done;
83デフォルトの名無しさん
垢版 |
2019/11/28(木) 08:09:55.57ID:f/6vs/+B
trap '
for ((aa = 0; aa < MAX_TIMER; aa++)); do
if [ ${tim_flg[$aa]} -eq 1 ]; then
if [ ${tim[$aa]} -gt 0 ]; then
tim[$aa]=$((tim[$aa] - 1));
fi
fi
done
printf "%3d" ${tim[*]};
echo ":" $(date -R);
' SIGINT
84デフォルトの名無しさん
垢版 |
2019/11/28(木) 08:11:04.34ID:f/6vs/+B
for((nn=0; nn < 10; nn++)); do
tim_flg[$nn]=1;
done

while true; do
for((nn=0; nn < 10; nn++)); do
if [ ${tim[$nn]} -eq 0 ]; then tim[$nn]=$((nn + 2)); fi
done

sleep 0.6
done;
終わり
2019/11/28(木) 08:24:45.92ID:uZo2jF8i
なんか動いてるけど、何やってるのかわからんなw
とりあえずCTRL+Cで停止しなかった。
86デフォルトの名無しさん
垢版 |
2019/11/28(木) 08:29:37.54ID:f/6vs/+B
動作を確認するためタイマーのカウントとセットを繰り返しています。
終了するためにはSIGKILLを与えてください。
2019/11/28(木) 08:30:36.19ID:uZo2jF8i
しばし読んでみたけど、やっぱりわからんw

これ指定したn秒ごとにシグナル送るんじゃないのか?
tim配列とかtim_flgの意味がさっぱりだ
2019/11/28(木) 08:41:39.82ID:uZo2jF8i
簡単な所から。まずシグナルはSIGはいらんぞ。
bash限定ならそれでもいいがPOSIX的には無いほうが正しい。
INTはCTRL-Cなので、USR1またはUSR2、もしくはSIGHUPとかの方が良い。
セミコロンはC言語じゃないんだから行を継続しないときにはつけないのが一般的
89デフォルトの名無しさん
垢版 |
2019/11/28(木) 08:42:09.42ID:f/6vs/+B
各タイマが0になったらなんかをちょっとやり、またタイマをセットするというプログラムです

tim配列はタイマ本体です。tim_flg配列はタイマ使用/不使用のフラグです。
2019/11/28(木) 08:49:25.10ID:uZo2jF8i
やっと理解したが、これ説明なしに理解するの大変だぞw
本質的じゃないコードが複雑でそっちのほうが多すぎる。
2019/11/28(木) 08:51:32.36ID:uZo2jF8i
tim_flgの意味がないな。いや意図は想像できる。(というか>>89に書いてあるか)
サンプルとしてはノイズにしかなってないので理解ができない。
2019/11/28(木) 21:14:01.96ID:uBUVzLWV
宿題の添削をしてやるとか親切たなw
2019/11/28(木) 21:36:47.47ID:asJppHFe
目的は、bash依存すんな。って言うことだったんだがなw
流石にbash依存してる部分が、本質的じゃない所ばかりだとやる気が。
バッサリ削ったら簡単に、bash依存なくせるんでどうしようかなと思いながらレス待ちw
2019/11/28(木) 23:49:59.71ID:RaRUIeaw
bash依存しまくりで
https://wandbox.org/permlink/EHSiHk726Bn4qvVO
95デフォルトの名無しさん
垢版 |
2019/11/29(金) 00:53:33.34ID:Fh79+8D6
あんまりソフトタイマに有用性を感じてもらえないようで残念でした。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況