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

■ このスレッドは過去ログ倉庫に格納されています
2021/02/25(木) 09:20:14.64ID:ZyJLXTlk
シェルスクリプトに関する総合スレッドです。

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

前スレ: シェルスクリプト総合 その35
https://mevius.5ch.net/test/read.cgi/tech/1606221440/

関連スレ
・【Bash】Windows Subsystem for Linux【WSL】9
https://mao.5ch.net/test/read.cgi/linux/1607589861/
・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/
・過去UNIXで使われていた ksh というシェルについて
https://mevius.5ch.net/test/read.cgi/unix/1582358403/
・【POSIX】UNIXプログラミング【BSD】 [転載禁止](c)2ch.net
https://mevius.5ch.net/test/read.cgi/unix/1443103705/
・おまえら! shell は何を使っているんですか?
https://mevius.5ch.net/test/read.cgi/unix/1012330865/
2021/04/06(火) 08:55:42.05ID:dc8Xc+ex
(短時間、連投来たなあ。さすがいつも戦ってるチャンピオンw)
2021/04/06(火) 08:58:18.00ID:MTiaA6bM
やはりレスの相手はコードではなく俺
2021/04/06(火) 09:04:16.76ID:dc8Xc+ex
>>382
>--target1
>は、許すんだな
は?
そういう見え透いたカオスなこと言うんだから、チャンピオンは
なんかhelp(プログラムでのコマンドがある場合)ではしゃいでるwようだけど、自己都合でしかないよw

>>385
何言ってるの?>>377って言ってるでしょ
当然お前だよ。ただし「気に食わない」とか「戦う」じゃないよ。理解できないの?
2021/04/06(火) 09:10:08.38ID:MTiaA6bM
それでコードに問題あるの?問題ないの?
その解決策は自分で思いつけないの?
いいからコードの話をしなよw
2021/04/06(火) 09:10:59.23ID:dc8Xc+ex
そう言うお前は問題ないと思ってるの?
2021/04/06(火) 09:13:34.38ID:MTiaA6bM
質問に質問で返すな
2021/04/06(火) 09:18:50.92ID:MTiaA6bM
質問に質問で返す人の心理について
https://mental-kyoka.com/archives/6137

> しかし、聞かれたくない事を聞かれている不快感を放置することができず、
> 婉曲的ではありますが質問に質問で返すという行為により
> 「その質問の内容は不愉快だからやめてくれない?」と暗に
> 伝えているのだと考えることもできます。
> いわば、「逆ギレ」の一種と表現するのが適当かもしれません。

> また、後述するように逆に質問する行為がうまく行き、
> 会話の主導権を自分が握ることができれば、
> 今度は自分が相手に質問責めをして、今まで受けてきた
> 質問に対する鬱憤を晴らすことも可能です。

なるほど
2021/04/06(火) 09:19:45.59ID:dc8Xc+ex
ここ大事だから。お前から聞いてきたんだから、お前が自ら答える責もあるだろう
ホント、自分は例外だな。いつものことだが

もちろんお前(に限らず)がそうしようがお前の勝手だから問題だとは思わんよ
他人のやり方にアレコレダメ出しするお前はどう答えるのか当然先に聴きたくなるのは当たり前じゃん
馬鹿な墓穴掘り質問だから尚更wいつもの浅知恵レスだから尚更尚更、質問したくなるじゃん
2021/04/06(火) 09:20:32.67ID:dc8Xc+ex
(また変な浅知恵、何とか貶めたいだけwのをわざわざ探してきてんな)
2021/04/06(火) 09:20:36.35ID:MTiaA6bM
あ、ごめん。先に「質問に質問で返す人の心理について」について読んじゃったw
2021/04/06(火) 09:20:55.48ID:MTiaA6bM
ではもう一回聞くね

それでコードに問題あるの?問題ないの?
その解決策は自分で思いつけないの?
いいからコードの話をしなよw
2021/04/06(火) 09:21:53.66ID:dc8Xc+ex
戦うチャンピオン、スカってるぞ。頑張れw
2021/04/06(火) 09:23:49.17ID:MTiaA6bM
※ コードの話をしろよといった次のレスがやはり俺の話
2021/04/06(火) 09:25:00.64ID:dc8Xc+ex
え?答えないの?ww
また何度も繰り返す、困った時のフレーズですか?
2021/04/06(火) 09:28:37.03ID:MTiaA6bM
コードに問題はないよ

で、お前はコードに問題あると思ってるの?問題ないと思ってるの?
その解決策は自分で思いつけないの?
いいからコードの話をしなよw

俺はもう答えたからねw
2021/04/06(火) 09:31:53.66ID:dc8Xc+ex
答えてるんですけど
お前が戦う姿勢なのはいいが、ちゃんと読んでくれなきゃ、ずっこけるだけですよw

コードに問題なければいいなら、Makefileで問題なければいいってことになるだろうに
自分だけは例外は許されへんな
2021/04/06(火) 09:33:48.52ID:MTiaA6bM
> 答えてるんですけど

次のレスは、どのレスで答えてるかを書くだけでいいよ
2021/04/06(火) 09:34:52.15ID:dc8Xc+ex
何でそんなに偉そうなんだかなwww
>>391
>もちろんお前(に限らず)がそうしようがお前の勝手だから問題だとは思わんよ
2021/04/06(火) 09:34:55.28ID:MTiaA6bM
まだ?
2021/04/06(火) 09:35:55.88ID:MTiaA6bM
>>401
コードに問題があるか、コードに問題ないか、答えてないよね
コードに問題あるかどうかは言わずに、
それでいいよって言ってるだけだよ
2021/04/06(火) 09:36:46.41ID:MTiaA6bM
コードに問題がないなら>>369のmake.shでいいじゃんなw
2021/04/06(火) 09:37:44.50ID:MTiaA6bM
コードに問題がある or 問題がない・・・これはコードの問題
お前がそれでいいと思うならそうなんだろうな・・・これはコードではなく俺の話
2021/04/06(火) 09:38:03.38ID:MTiaA6bM
訂正

コードに問題がある or 問題がない・・・これはコードの話
お前がそれでいいと思うならそうなんだろうな・・・これはコードではなく俺の話
2021/04/06(火) 09:43:24.15ID:dc8Xc+ex
変な浅知恵でサイト探してからおかしいぞ
大丈夫か?w
クールダウンタイム必要か?

お前が、コードに「問題あるの?問題ないの?」のって聞いてきてるんだから、「問題だとは思わん」が答えになってるだろうに
何をおっしゃってるんですか。マジ大丈夫ですか?

「お前が」「他人のに」「ダメ出ししてるのが」アホみたいなながーいやり取りになる(俺だけではないのは上の方でも)主要因なのに、(Makefileでの利点をいまだに理解しようとしないのは置いておいても)何を自分ので問題ないでしょなんておっしゃってるんですか
カオスw
2021/04/06(火) 09:44:08.56ID:7tHYoHIo
(戦うチャンピオンwww)
2021/04/06(火) 09:45:42.68ID:MTiaA6bM
>>407
だからコードに問題がないなら>>369のmake.shでいいという話でしょ?
さっさと終わろうぜw
2021/04/06(火) 09:49:39.74ID:MTiaA6bM
Makefileでの利点はタスクランナーじゃなくて
依存ファイルに基づいて何かを処理するのが得意ってことだよ
タスクランナーとしてならシェルスクリプトの方が得意だって最初に言ったじゃん
2021/04/06(火) 09:49:55.09ID:7tHYoHIo
なに自分だけに都合が良いように誘導しようとしてんだか
そういう見え透いたのは、ホントにもうw浅知恵好きすぎだろう
矮小化した自分に都合に良いというちょっとナツいフレーズ

てか、結論は出てるだろう、なんか必死で逃げようとはしてるけど
コードに問題なければいいなら、Makefileで問題なければいいってこと
で終わること、とっくに終わってることだよ
2021/04/06(火) 09:52:24.42ID:7tHYoHIo
>>410
そう思わないのが居てもいいだろうに(居てもいいとお前自身がもう言ってしまってるようなもんだしなw)、何をそんなに拘って否定してんだか
(Makefileでの利点はお前は今も理解できないのはもうしょうがないとしても)
2021/04/06(火) 09:53:19.77ID:MTiaA6bM
>>411
> コードに問題なければいいなら、Makefileで問題なければいいってこと

シェルスクリプトのコードに問題なければいいなら、Makefileで問題なければいいってこと
ってどういう意味?

シェルスクリプトのコードに問題ないなら
シェルスクリプトのコードでいいでしょ?
2021/04/06(火) 09:53:53.30ID:MTiaA6bM
>>412
だから俺の話じゃなくて、コードの話をしたら?
Makefileの利点の話をしたいんでしょ?
2021/04/06(火) 09:56:33.41ID:7tHYoHIo
浅知恵はすぐ働くくせに、少しは頭をちゃんと使おうな
コードに問題なければ と言い出したのはなぜか自問してみ

自分の都合の良いだけの良い張り繰り返しだなw
2021/04/06(火) 09:57:37.45ID:MTiaA6bM
シェルスクリプトのコードが問題なければ
>>369のmake.shで問題ないという結論になる

それだけのことだと思うが?
2021/04/06(火) 09:58:01.09ID:7tHYoHIo
>>414
すでに出てる
理解できないお前には無理のようだが。金くれるならじっくり教えてやるぞw
2021/04/06(火) 09:58:49.67ID:MTiaA6bM
すでに出てるものは全て否定したんで
その結果>>369のシェルスクリプトのコードになったんだよ
話の流れを理解してないようだね
2021/04/06(火) 10:01:54.70ID:TYYwd7pV
>>369
シェルスクリプトのオプションの話をしてたはずなのに、ただのターゲットに変えるとか、コスいことすんな!w

ちなみにもともとは、makefileでは「タスク表示」ができない、って不当なクレームがあっただけの話やったもよう。
おまえ、忘れてるやろ?w
2021/04/06(火) 10:02:58.82ID:7tHYoHIo
>>416
>「お前が」「他人のに」「ダメ出ししてるのが」アホみたいなながーいやり取りになる(俺だけではないのは上の方でも)主要因

>コードに問題なければいいなら、Makefileで問題なければいいってこと
>で終わること、とっくに終わってることだよ

お前のの良し悪しなんて本筋とは関係ない、なぜなら、お前が拘ってるのは他人の(Makefile使うな)に対してだろうに

>>418
否定してると思い込んでるのはお前だけだぞ。浅知恵でのでしかないからなw
2021/04/06(火) 10:03:14.47ID:MTiaA6bM
>>419
いえ、シェルスクリプトには問題ないとのことです。はい。
その話は終わりました。
2021/04/06(火) 10:03:46.44ID:7tHYoHIo
>>419
>おまえ、忘れてるやろ?w
いつものしょっちゅうやってることだけどなww
2021/04/06(火) 10:04:01.45ID:MTiaA6bM
> なぜなら、お前が拘ってるのは他人の(Makefile使うな)に対してだろうに
何の話ですか?そんな話はどのレスでもしてませんよ
2021/04/06(火) 10:05:07.04ID:7tHYoHIo
ほらほら「あくまでも自分の都合の良い言質が欲しいだけ」だろwww
2021/04/06(火) 10:05:07.70ID:MTiaA6bM
>>419
> ちなみにもともとは、makefileでは「タスク表示」ができない、って不当なクレームがあっただけの話やったもよう。

はい、自分で作らないとできませんよね?
間違ってますか?
2021/04/06(火) 10:08:05.69ID:7tHYoHIo
何を言ってるんだかなあ
今まで散々Makefileなんて使わないでシェルスクリプトでいいだろう(シェルスクリプト書けないのwとかさえ)と、Makefileいいよって言っている人に突っかかってたくせに

ね、
>おまえ、忘れてるやろ?w
いつものしょっちゅうやってることだけどなww
2021/04/06(火) 10:09:04.06ID:7tHYoHIo
止まれ、アホみたいにながーい要因が無くなった(忘却された)ようで終わりだな
2021/04/06(火) 10:09:12.04ID:MTiaA6bM
> Makefileいいよって言っている人に突っかかってたくせに

Makefileいいよって言ってる人は
どこのレスの話ですか?
2021/04/06(火) 10:10:37.68ID:7tHYoHIo
まさかmakeとか言うんじゃないだろうな、まさかな
何をおっしゃってるんですか、誤魔化すにも馬鹿すぎる誤魔化しすぎですよ
2021/04/06(火) 10:11:34.82ID:TYYwd7pV
>>370
並列実行させたくなければ、makeは-j 1するだけで充分合理的に実行されるんやで?

ところが、シェルスクリプトで>>298みたいなことしたら、かならず並列実行になるがな。w
prepareは重いっつってんのに全無視やし。w
おまえのほうがbgに夢見すぎやろ。w
2021/04/06(火) 10:11:54.30ID:MTiaA6bM
もしかしてこれ>>286ですか?

> >>265
> そんなんするくらいなら、makefileのほうが万倍マシやな!w
> makeと違って、個別ターゲットの指定もできないし。

先にシェルスクリプトのコードが否定されたわけですが
そのシェルスクリプトのコードは問題ないと同意が取れたんですが?
2021/04/06(火) 10:12:37.38ID:7tHYoHIo
>>430
あなたはいらっしゃらないようですよ、もう彼にはw
2021/04/06(火) 10:14:01.22ID:TYYwd7pV
あと、makeの-nとか-qとかのオプションを、シェルスクリプトで簡単にやる方法も頼むわ。
2021/04/06(火) 10:15:02.84ID:7tHYoHIo
>>431
また見え透いた自分の都合の良いのを出す(ある意味状態を模造)るんじゃないよ
2021/04/06(火) 10:15:34.36ID:MTiaA6bM
>>370
> 並列実行させたくなければ、makeは-j 1するだけで充分合理的に実行されるんやで?
POSIXじゃないので実行できない場合があります

> ところが、シェルスクリプトで>>298みたいなことしたら、かならず並列実行になるがな。w
え?そんな話今はじめて出ましたよねw

並列実行したくないなら & を取るようにしましょう
2021/04/06(火) 10:16:47.41ID:TYYwd7pV
>>431
で、>>430はどうなん?w
2021/04/06(火) 10:19:48.49ID:MTiaA6bM
>>433
> あと、makeの-nとか-qとかのオプションを、シェルスクリプトで簡単にやる方法も頼むわ。
簡単だね

makeの-n
DRY_RUN=1
run() {
 if [ "$DRY_RUN" ]; then
  echo "$@"
 else
  "$@"
 fi
}
run hage hage

-qはタスクランナーとは関係ないな
依存関係があるものに関しては、シェルスクリプトからmakeを呼び出すっていいましたね
2021/04/06(火) 10:20:46.70ID:MTiaA6bM
>>436
xargsの話ですか?
2021/04/06(火) 10:24:39.26ID:TYYwd7pV
>>435
> POSIXじゃないので実行できない場合があります
-jオプションの話を出したのはおまえちゃうの?w
まあ、ヤな環境は、捨てるか逃げるかしたらええで。

> え?そんな話今はじめて出ましたよねw
> 並列実行したくないなら & を取るようにしましょう
prepareが重いという前提を無視すんな。w
たとえばprepare1時間、task*は1分だとすると、makeなら1時間3分、シェルスクリプトなら3時間3分やな。。。

おまえは、本当にそれでええと思っとるんか?
2021/04/06(火) 10:29:29.37ID:TYYwd7pV
>>437
まさかそんなふつうかつめんどい対応を、全ターゲットにいちいちやったらなアカンのか。。。

おまえはシェルスクリプトを使う、ワイはmakeを使う。
もうそれでええな。
2021/04/06(火) 10:34:37.59ID:7tHYoHIo
>>440
全然関係ないけど、マジ関西人ですか?
2021/04/06(火) 11:18:25.64ID:TYYwd7pV
>>441
そうやで!w
なんや?
2021/04/06(火) 11:27:15.77ID:WaPRNDqz
>>442
なるほど
使い勝手がいいからちょこちょこ(リアルでもw)使うエセ関西人やけど、
「やったらな」ってムズいなと感じ、もしかしたらとちょっと興味が出ただけです
お答えありがとうございましたw
2021/04/06(火) 19:56:38.86ID:TgvwVymv
くだらないスレだな
2021/04/06(火) 22:33:28.43ID:ceQksYZ9
と、くだらないレスしたがり
446デフォルトの名無しさん
垢版 |
2021/04/10(土) 21:39:22.59ID:1S4Ftpl7
>>237
# シェルスクリプトマガジン vol.30
# POSIX原理主義の逆襲
url=$( echo '/M57C8NB70B/pd/koobe-哲寛仲當-03-lov-ンジガマトプリクスルェシ/pj.oc.nozama.www//:sptth' | rev )
/usr/bin/firefox "$url"
xdg-open "$url"
# /usr/bin/google-chrome "$url"
2021/04/10(土) 21:47:45.62ID:AcLZ31++
クソな名前出すな
2021/04/11(日) 13:12:18.88ID:kxus16p0
revはちゃんと文字単位でひっくり返してくれるんだ?
へぇー
2021/04/11(日) 13:26:48.64ID:kxus16p0
>>250
デスクトップ向けlinuxだと4KiBくらい貯めるのかな
改行のありなしやら入出力がターミナルかやら(test -t)で決めてるみたい?
tr -d \\nで改行絞った小さなテキストが延々と出てこなかったりするな
何が起きてるのか正直分からん
2021/04/11(日) 17:47:40.37ID:+rFBum4X
Standard C Library の FILE の挙動
Cでプログラム書いてみればわかるよ
2021/04/14(水) 19:37:11.29ID:35zwdl55
> ・csh/tcshでのシェルスクリプトは*まったく推奨しません*

マジだった。ちょっと興味本位でやってみたら
変数に改行を入れようとしただけで力尽きるとは思わなかったわw
2021/04/15(木) 03:22:43.97ID:06Qz2l+r
>>2の最後の行、ゆうなって馬鹿みたいだから正しい言葉遣いに直してほしいなぁと思うのは私だけ?
2021/04/15(木) 05:04:20.88ID:5nOuM6c9
言うなをゆうなって綴るの関西弁かな
2021/04/15(木) 07:26:46.96ID:kVBfEodl
言うをゆうと発音するのは標準語
言うをゆうと書くのはただのバカ
2021/04/15(木) 10:26:01.70ID:CT+ncMKm
半分ネタやろ。
どうでもええわ。

どうしてもイヤなら、次スレを自分でたてて直せ。
2021/04/15(木) 11:21:03.44ID:cwo7XkJi
>>449
https://linuxjm.osdn.jp/html/LDP_man-pages/man3/setbuf.3.html
これ。書いてある通りそのままの動作だろう。4Kとかデフォルトは C Library による
コマンドで制御できるのは>>248のstdbuf
stdbufのソースは、FILEのこれらは外から制御なんてそもそも考えてないのでトリッキーなことして面白い
2021/04/15(木) 11:49:33.19ID:CT+ncMKm
$SHELLOPTSに「interactive-comments」と入ってるんだけど、これは何?
man bashには記述がない。。。
2021/04/15(木) 12:00:32.18ID:cwo7XkJi
man bashにもあるやん
# 以降はコメント/無視するだって
2021/04/15(木) 12:38:40.16ID:wukWzou0
"いい"も口語なんでauto。ちゃんとposix使ってください
2021/04/15(木) 13:42:52.38ID:EYZytY4L
>>456
あざっす
システムプログラミングアレルギー(manで2/3出てきたらそっ閉じ)なもんで…

sedとか-u(unbufferd )オプション付いてていいね、チョロチョロ出てくるのも想定してるんだろう
他はstdbuf効くならば試行錯誤って感じで凌いでるけど、もう腹括る時だろうか…
2021/04/15(木) 13:47:44.84ID:EYZytY4L
>>451
ちょうど'94年のcomp.lang.unixのfack読んでたとこだけどcshナウいぜって空気でノスタルジー
問題のリダイレクト関連は(入れ子)でサブプロセス内/外のリダイレクトを切り分け頑張るアンサーが面白かったです
2021/04/15(木) 13:50:07.80ID:EYZytY4L
unixはlangじゃねえわcomp.unix.*ですごめん
2021/04/15(木) 14:02:10.00ID:ddLCV2xW
いまもcsh/tcsh使ってる人っているんだろうか?
shが神に見えるんだが
shからすれば、csh/tcshはcmdと同レベル
2021/04/15(木) 14:31:45.46ID:Hr/L3ezh
昔のshはそれはそれでクセがあったみたいだぞ、faqによると
誰もが一度は躓く
cmd |while ..
do change v
done
echo $v
問題ももっと酷くて、whileへ<inすらもアウトだった

そもそもリダイレクトはフォークする必要無いよね?バグみたいなもん?
なおパイプラインはフォークしてナンボなので合理的な設計だと思ってます
オプションlastpipe提供が現実的な妥協点かなと
465462
垢版 |
2021/04/15(木) 14:33:04.56ID:Hr/L3ezh
です
2021/04/15(木) 14:42:31.76ID:gZ/E9OPr
>>460
ちなみに、
unbufferdだけでいいんじゃあって場合、
setbuf -o0 command1 | setbuf -o0 command2 | command3
setbuf -o0 command4 | command5
...
でなくて、冒頭で、
export LD_PRELOAD='/your/location/libstdbuf.so'
export _STDBUF_O=0
ってすると、以下外部コマンドは全て setbuf -o0 をすることになる
2021/04/15(木) 14:56:50.94ID:Hr/L3ezh
>>466
環境変数という手があったか
(いざ困るまでは)もちろんバッファはあった方が良いので、exportするスクリプトを書くと親からうっかりsourceしてしまいそうで…

env/インライン代入 パイプライン
にしといた方が安全そうですかね?
2021/04/15(木) 15:03:30.09ID:Hr/L3ezh
そもそもsourceしまくるのがお行儀悪いから、そっちを控えるべしなのかな?
何でもシェル関数にしてそれをソースしまくるパッケージを入れてしまって、bash -xオプション付けると何か操作する度に画面が数ページ流れてうんざりした経験が…
2021/04/15(木) 15:41:44.39ID:CT+ncMKm
>>458
ども。
探し直したよ。
あー、$SHELLOPTSではハイフンだけど、manページだとアンダーバーになってんな。。。
2021/04/15(木) 18:10:56.52ID:ddLCV2xW
>>468
マジに質問したいんだけど
sourceを何をするときに使うコマンドだと思ってる?
2021/04/15(木) 19:33:19.08ID:hKlH1+Q2
>>467
>env/インライン代入 パイプライン
stdbufを使うのと変わらないんじゃない
使うの局所化したいんだったら ( ) でサブシェルにするとかかな
472デフォルトの名無しさん
垢版 |
2021/04/17(土) 05:11:50.36ID:YdwasajV
>>446
URL=$( echo '/swenybb/ten.hc5.enildaeh//:sptth' | rev )
TMP_DIR=~/tmp/5ch; DOC=${TMP_DIR}/index.php; mkdir -p ${TMP_DIR}
wget --output-document=${DOC} ${URL} || exit 1
iconv -c -f Shift_JIS -t utf-8 ${DOC} \
| grep '2021' | awk -F '</a> <br>' '{print $1}' \
| awk -F '</font>]' '{print $2}' > "~/Documents/5ch_dv.txt"
i=1; while true; do
cut --bytes=1-210 "~/Documents/5ch_dv.txt" | shuf -n 2; sleep 10; done
473デフォルトの名無しさん
垢版 |
2021/04/17(土) 19:55:09.09ID:woV5WRvk
URL=$( echo 'fdr.wkwen/ssr/pj.en.oog.hcraes//:sptth' | rev )
TMP_DIR=~/tmp/goo; DOC=${TMP_DIR}/index.php; mkdir -p ${TMP_DIR}
wget --output-document=${DOC} ${URL} || exit 1
iconv -c -f utf-8 -t utf-8 ${DOC} | grep -v 'gooウェブ検索 急上昇ワード' \
| grep 'title' | awk -F '<title>' '{print $2}' \
| awk -F '</title>' '{print $1}' >> "$HOME/Documents/goo_web.txt"
while read KEYWORD; do
URL=$( echo '=yreuq_hcraes?stluser/moc.ebutuoy.www//:sptth' | rev )""$KEYWORD""
firefox "$URL"; sleep $( shuf -i 10-21 -n 1 )
done < "$HOME/Documents/goo_web.txt"
2021/04/17(土) 19:55:27.64ID:HVVFTxep
きたねーコードであらすな
475terai
垢版 |
2021/04/27(火) 17:28:08.57ID:K85aNu+Y
Linux(CentOS7)からsshで192.168.1.50(windows)に接続して、grepでD:\samba-backup\tmpの中を探して、
"bk-日付.tar"という名前のファイルがあれば"backup = O"、なければ"backup = O"と表示されるようにしたいと思い以下のようにシェルスクリプトを書きました。
if expect -c "
set timeout 5
spawn ssh administrator@192.168.1.50 cmd /c dir /b d:\\samba-backup\\tmp
expect \"password\"
send \"パスワード\n\"
expect eof
exit
"|grep "bk-$(日付).tar"
then echo "backup = O"
else echo "backup = X"
fi
実行すると"backup = O"と表示されると思ったのですが、"backup = X"と表示されます。tmpフォルダには"bk-日付.tar"という名前のファイルが確かに置いてあります。どうすれば"backup = O"と表示されるようになるのか教えてください。よろしくお願いいたします。
2021/04/27(火) 21:13:37.71ID:veDN2Ote
複雑な問題は複数のより単純な問題に分割すればいいんじゃないかな
まずは expect だけ実行して何が出力されるかみるところから始めなよ
477デフォルトの名無しさん
垢版 |
2021/04/27(火) 22:41:50.05ID:1A6wmpHM
batの問題じゃないの
2021/04/28(水) 06:11:06.05ID:M5uDUSOh
"|grep "bk-$(日付).tar"
tmpフォルダには、"bk-日付.tar"という名前のファイルが確かに置いてあります

この「日付」って、日本語を使っているの?
基本的に、半角英数字・ascii 以外は、動かないのでは?

日本語には、CP932・UTF-8/16/32 の4つのエンコードがあって、
各OS・ファイルシステム・端末の入出力によって異なるから
2021/04/28(水) 06:38:05.23ID:xybfukyI
中途半端の知識。自分が詳しいつもりになってそう。
素人同然だから1から勉強してね
480478
垢版 |
2021/04/28(水) 06:50:30.51ID:M5uDUSOh
そもそも、Linux から、cmd とか、Windows のコマンドを呼べるの?
Remote Login してるの?

PuTTY, TeraTerm, VSCode のRemote SSH などを使えば?
2021/04/28(水) 07:31:16.23ID:QZeYlOuK
>>480
>Linux(CentOS7)からsshで192.168.1.50(windows)に接続して
って書いてるじゃん
>>478もわかってなさそうだぞ
482terai
垢版 |
2021/04/28(水) 10:22:09.08ID:D1qJru6v
spawn ssh administrator@192.168.1.50 cmd /c dir /b d:\\samba-backup\\tmp
のところを
spawn ssh administrator@192.168.1.50 cmd /c dir /b d:\\\\samba-backup\\\\tmp
にしたらうまくいきました。ご迷惑をおかけしました。
483478
垢版 |
2021/04/28(水) 10:55:25.45ID:M5uDUSOh
例えば、Windows 10, WSL2, Ubuntu 18.04, Ruby では、
Linux 側から、Windows側のC ドライブへアクセスできる

パス区切りも、/ を使える。
\ では、各端末でのエスケープを考慮しなければならないので、非常に難しい

Dir.glob( '/mnt/c/Users/Owner/Documents/test/**/*.txt' ) do | full_path |
next if File.directory? full_path # ファイルだけを処理する

p full_path
end
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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