トップページunix
1002コメント330KB

シェルスクリプト総合 その25©5ch.net

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。 転載ダメ©2ch.net2015/08/14(金) 23:42:01.51
シェルスクリプトの総合スレです。
□お約束
・特記なき場合はBourne Shell(/bin/sh)がデフォルトです。
 bash/zsh/ksh/ashなどに依存する場合は明示しましょう。
 Linuxユーザは/bin/shの正体がbashまたはdashなので特に注意。
 FreeBSDユーザは/bin/shの正体がashなので注意。
 v7 shに一番近くて、現役のshは、OpenSolaris由来のheirloom sh。
  http://src.illumos.org/source/xref/illumos-gate/usr/src/cmd/sh/
  http://heirloom.sourceforge.net/sh.html
・csh/tcshのシェルスクリプトは推奨されません。
 (理由は「csh-whynot」でググれ)
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。
 manや参考リンクを見ましょう。
 aproposないしはman -kでそれらしい単語による簡単な検索もできます。
・シェルで使えるワイルドカード等は正規表現ではありません。
 正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆーな
□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
 awkまたはperlの方が適した処理にはそちらを使いましょう。
・知らないコマンドが出てきたらmanを引きましょう。
・思い通りに動かないときは、まずは sh -x でトレースしましょう。
□回答者への注意事項:
・シェルスクリプトでの処理方法を質問しているのに、よくわからずに
 「そういうのはperl使いましょう」と回答するのはやめましょう。
 安易にperlに逃げずにシェルスクリプトで処理するのが頭のいいやり方。
前スレ
シェルスクリプト総合 その24
http://peace.2ch.net/test/read.cgi/unix/1415634843/
0046名無しさん@お腹いっぱい。2015/09/09(水) 20:21:28.99
>>45

私の環境ではこうなります。

$ echo "aaa bbb" | grep "aaa\|bbb"; echo $?
aaa bbb ccc
0
$ echo "aaa bbb" | grep "aaa\&bbb"; echo $?
1
0047名無しさん@お腹いっぱい。2015/09/09(水) 20:25:36.29
>>45

あれれ、「 ccc」入っちゃった。無視してくださいw
0048名無しさん@お腹いっぱい。2015/09/09(水) 20:50:24.67
>>46
だからそれは仕様どおり
0049名無しさん@お腹いっぱい。2015/09/09(水) 20:54:06.69
\|には特別な意味があるけど\&にはないんだよ
単に&と書いたのと同じ
005039、412015/09/10(木) 02:49:03.69
>>44>>46
ひょっとすると[grep]コマンドによる『AND検索』の方法(記述)を
『grep "aaa\&bbb"』だと勘違いしていない?
[grep]コマンドによる『AND検索』には『OR検索』のような正規表現による
記述方法『grep "aaa\|bbb"』は存在しないので、つぎの例のように地道
にパイプで繋ぐしかないけど

[grep]コマンドによる『AND検索』の方法
$ echo "aaa bbb" | grep "aaa" | grep "bbb" ; echo $?
aaa bbb
0
$ echo "aaa ccc" | grep "aaa" | grep "bbb" ; echo $? # マッチしないデータ「aaa ccc」の例
1
$

あと、>>44>>46 って >>38 と同じ人?
0051名無しさん@お腹いっぱい。2015/09/10(木) 07:50:58.43
$ grep -E 'aaa.*bbb|bbb.*aaa'

か、GNU grep なら

$ grep -P '(?=.*aaa)(?=.*bbb)'

でもOK。
0052名無しさん@お腹いっぱい。2015/09/10(木) 07:56:54.38
awk 使え awk '/aaa/&&/bbb/'
0053名無しさん@お腹いっぱい。2015/09/10(木) 17:51:40.81
\& なんてどこに書いてあったの
0054名無しさん@お腹いっぱい。2015/09/24(木) 23:16:07.36
宣伝

【POSIX】UNIXプログラミング【BSD】 [転載禁止]©2ch.net
http://peace.2ch.net/test/read.cgi/unix/1443103705/
0055名無しさん@お腹いっぱい。2015/09/27(日) 16:29:45.68
こんな風なテキストファイルlog.txtがあります
%PART_A%
a11 a12 13
a21 a21 a23
a31 a32 a33
%PART_B%
b11 b12 b13 b14
b21 b22 b23 b24
b31 b32 b33 b24

このように%PART_x%(実はxはAとBがランダムに登場)で区切られながら
数行ずつ出力されているテキストを、値だけ(a11〜b24まで)、5列で左詰めの
CSV形式に整形するために、こんなスクリプトを作りました(ほとんどawkですが・・・)
#!/bin/sh
cat log.txt |
awk 'BEGIN{FLG=0}
/%PART_A%/{FLG=1; getline}
/%PART_B%/{FLG=2; getline}
{if (FLG==1) {print $1","$2","$3",0,0"}
else if (FLG==2) {print $1","$2","$3","$4",0"}
}'

期待通り動いてはいるのですが、フラグやgetline周りが、なんか力技?っぽくて
改善の余地があるように思ってます
このような処理をawkで書くときって、どのように書くとよいのでしょう
0056名無しさん@お腹いっぱい。2015/09/27(日) 16:38:38.08
力技でも動いているならそれでいいんじゃない?
この間、似たような事を業務でやったけど考えるの面倒だったから
pasteコマンドでひとつのファイルにして、特定フィールドを読み込む方法にした。
なにぶん、思想が古い年代なもんで複数ファイルを
同時に読み込んであーだこーだするのはCで書きたくなる。
0057名無しさん@お腹いっぱい。2015/09/27(日) 17:34:07.98
きれいでも動かないコードより
きたなくてもちゃんと動作するコードの方がよい
そんな格言なかったっけ?
0058名無しさん@お腹いっぱい。2015/09/27(日) 19:24:41.10
要求仕様通りに動くことが大前提ですな。
コードの可読性を語るとキリが無い。
シェルスクリプトで訳が判らなくなる書き方する人いるけど、ある意味才能としか思えない。
0059名無しさん@お腹いっぱい。2015/09/28(月) 01:10:28.27
過疎ってるけど
awkについて語るスレ $2
http://peace.2ch.net/test/read.cgi/tech/1172242542/
もありますよ。a11からb24が全部数値で3つまでは確実に値が入ってるなら
awk 'BEGIN{OFS=","};!~/%/{print $1,$2,$3,$4+0,0}'
で済む気がするけど。
0060名無しさん@お腹いっぱい。2015/10/04(日) 19:58:15.31
>>57
きれいでも動かないコードより
きたなくてもちゃんと動作するコードの方がよい

そして、きれいでちゃんと動作するコードが
一番いいのは言うまでもない。
0061名無しさん@お腹いっぱい。2015/10/04(日) 22:53:55.31
正規表現で書くとどうなるんだ?
0062名無しさん@お腹いっぱい。2015/10/06(火) 13:14:00.89
getline回りはsplitで"^(?=\%PART_)"で区切れると楽
下のコードは "^(?=\d)"にするとレス番号だけが行頭で表示され
本文はインデントされる2chですら処理できる

#!/usr/bin/env perl
use strict;
use warnings;
use utf8;
my $enc = 'UTF-8';

my ($delimiter, $search);
$delimiter = "^(?=\%PART_)"
GetOptions ('delimiter|d=s' => \$delimiter, 'search|s=s'=> \$search);
my $line = join('', <>);
my @lines = split /$delimiter/m, $line;
for (@lines) {print if /$search/;}
0063名無しさん@お腹いっぱい。2015/10/13(火) 12:01:58.60
ワイルドカードて全角も扱えるんだね
勝手に半角のみと思い込んでた
自分用メモ
ひらがな: [ぁ-ん]
全角カタカナ: [ァ-ヾ]
半角カタカナ: [ヲ-゚]
全てのカタカナ: [ァ-ヾヲ-゚]
全角数字: [0-9]
全角英字: [a-zA-Z]
全角英数字: [0-z]
全角文字(英数字以外, ひらがな, カタカナ, 漢字, 記号): [、-鶴]
全角文字(英数字, ひらがな, カタカナ, 漢字, 記号): [、-鶴0-9a-zA-Z]
漢字: [一-鶴]
0064名無しさん@お腹いっぱい。2015/10/13(火) 23:33:25.92
[ぁ-ん]と[ん-ぁ]で
・同じ結果→POSIX準拠
・結果が異なる→準拠してない
というのも豆
0065名無しさん@お腹いっぱい。2015/10/15(木) 01:00:25.45
\p{Hiragana}
0066名無しさん@お腹いっぱい。2015/10/16(金) 00:12:27.12
第一感その手のものを使って保守性ケアするよな
0067名無しさん@お腹いっぱい。2015/10/16(金) 13:16:19.20
任意のキーボード・ショートカットを突然入力すると、任意のスクリプトを実行するような技はありますか。
例えば、特定のアプリケーションをアクティブにするスクリプトを書いたとして、それを
Ctrl+Alt+Gで実行してGoogleChromeをアクティブにするとか、そういう事です。
Alt+Tabで一つ一つ切り替えるのはうんざりなんですよね。
スクリプト自体はできてるんですが、それをショートカットと結びつける技が分かりません。
0068名無しさん@お腹いっぱい。2015/10/16(金) 13:35:52.55
WMとかDEの機能使った方がいいんじゃね
シェルスクリプトの話ではない
0069名無しさん@お腹いっぱい。2015/10/16(金) 13:41:08.99
「linux キーボードショートカット カスタマイズ」でぐぐれ
/apps/metacity/global_keybindings/panel_run_dialogとかって情報はすぐ出てくる
0070名無しさん@お腹いっぱい。2015/10/16(金) 16:30:40.14
キーバインド割り当てかaliasを作るかじゃない?
0071名無しさん@お腹いっぱい。2015/10/18(日) 03:08:01.82
だな
w3mなら .w3m/keymap
xmonadなら .xmonad/xmonad.hs に書くような内容
0072名無しさん@お腹いっぱい。2015/10/18(日) 03:29:42.19
busyboxでunicode変換ってどうする?
0073名無しさん@お腹いっぱい。2015/10/19(月) 12:52:16.45
busybox sh に限らず、iconv とかuconvとか入れて使うんじゃない?
0074名無しさん@お腹いっぱい。2015/10/19(月) 14:00:50.57
すみませんが詳しい方のみ回答をお願いします
0075名無しさん@お腹いっぱい。2015/10/19(月) 14:28:46.62
unicodeの何を?何へ?何から?変換するのかもうちょっと具体的に書かないと応える気にならない
0076名無しさん@お腹いっぱい。2015/10/19(月) 15:27:19.76
詳しくないのはどっちだよ
そんなんだから周囲に教えてくれる人が居なくて
2chで質問するハメになるんだよ
0077名無しさん@お腹いっぱい。2015/10/20(火) 00:06:45.98
只のコピペの別人にキレてどうするよ。

わざわざbusybox縛りを入れて珍回答を期待してるのに普通の方法を答えるのもまあ2chらしいが。
っていうかnkfじゃないのな。
0078名無しさん@お腹いっぱい。2015/10/20(火) 07:22:32.22
以下のようなテキストファイルがあるとして
(記載のアルファベットは例であり数字だったりマルチバイト文字だったりします)

AAAAAAAAA
BBBB
CCCCCCCCCC
DDDDDDDDDDD
EEEEEEEEEEE

各1行を2行に増やすことってできますか?

AAAAAAAAA
AAAAAAAAA
BBBB
BBBB
CCCCCCCCCC
CCCCCCCCCC
DDDDDDDDDDD
DDDDDDDDDDD
EEEEEEEEEEE
EEEEEEEEEEE

ループで1行ずつ読んで2行にして出力するくらいしか思いつかなかったのですが
パイプを使ってシンプルにできたりしませんか?
0079名無しさん@お腹いっぱい。2015/10/20(火) 07:41:49.44
>>78
sed p foo.txt
0080名無しさん@お腹いっぱい。2015/10/20(火) 21:45:48.66
>>79
ありがとうございます
こんなに簡単にできちゃった・・・

とりあえずpコマンド調べてみて
変換しない指定で返還前と変換後の2行が出力されるからこうなると理解しました
0081名無しさん@お腹いっぱい。2015/10/20(火) 23:06:19.80
coolだよね
0082名無しさん@お腹いっぱい。2015/10/21(水) 00:43:12.91
>>78を元に戻す方法は?
0083名無しさん@お腹いっぱい。2015/10/21(水) 00:49:57.21
uniq
0084名無しさん@お腹いっぱい。2015/10/21(水) 01:33:11.68
4行並んだら破綻
0085名無しさん@お腹いっぱい。2015/10/21(水) 01:46:20.53
awk NR%2
0086名無しさん@お腹いっぱい。2015/10/21(水) 01:56:17.21
あえてsedで
sed 'N; s/.*\n//'
0087名無しさん@お腹いっぱい。2015/10/21(水) 06:13:41.20
GNU sed 限定

sed -n 1~2p
0088名無しさん@お腹いっぱい。2015/10/21(水) 06:38:20.24
sed 'n;d' だけでいいのにw
0089名無しさん@お腹いっぱい。2015/10/21(水) 07:02:03.89
尊い
0090名無しさん@お腹いっぱい。2015/10/22(木) 08:26:25.71
そうだな
現代でも使える場面のあるsedは凄い
0091名無しさん@お腹いっぱい。2015/10/22(木) 12:24:50.15
sedでutfの変換テーブル書いたらどの位の速度で動くものだろうか?
0092名無しさん@お腹いっぱい。2015/10/22(木) 14:32:56.99
pdfファイルやExcelファイルを文字検索したいのですが
スマートな方法はありませんか?
ファイル変換しないといけないでしょうか?
0093名無しさん@お腹いっぱい。2015/10/22(木) 15:27:18.78
変換しないとだめです
pdftotext あたりで標準出力に吐かせて grep とか
0094名無しさん@お腹いっぱい。2015/10/22(木) 15:55:01.58
こんな感じになりました
pdftotext hoge.pdf - | grep aaa

pdftotextでググったらこのページが
ttp://www.clear-code.com/blog/2010/8/2.html
Excelはssconvertを使えばいいようですね
0095名無しさん@お腹いっぱい。2015/10/22(木) 22:52:20.38
☆ 日本の核武装は早急に必須ですわ。☆
総務省の『憲法改正国民投票法』、でググってみてください。
日本国民の皆様方、2016年7月の『第24回 参議院選挙』で、日本人の悲願である
改憲の成就が決まります。皆様方、必ず投票に自ら足を運んでください。お願い致します。
0096名無しさん@お腹いっぱい。2015/10/27(火) 08:43:35.49
cat file|した方がいいことも有るぞハゲ
ってことかな?

大きなテキストファイルをawkで処理するときにcatで投げ込むのと、ファイル読み込みするのどっちが速いか比較 - カメニッキ
http://tapira.hatenablog.com/entry/2015/07/22/214419

大きなテキストファイルをawkで処理するときにcatで投げ込むと速い理由 - ablog
http://d.hatena.ne.jp/yohei-a/20150728/1438099752
0097名無しさん@お腹いっぱい。2015/10/27(火) 09:02:14.04
>>96
それって Linux OS でマルチコアで出力先が SSD の場合にだけ
速くなるかもしれないってオチだったような
0098名無しさん@お腹いっぱい。2015/10/27(火) 11:16:32.98
でも実際速くなったんでしょ?
0099名無しさん@お腹いっぱい。2015/10/27(火) 12:25:26.58
今の時代マルチコアしかないような気がするんだけど・・・
0100名無しさん@お腹いっぱい。2015/10/27(火) 12:54:33.20
今の時代Linuxしかないような気がするんだけど・・・
今の時代SSDしかないような気がするんだけど・・・
0101名無しさん@お腹いっぱい。2015/10/27(火) 17:55:11.78
>>98
他の環境だとリダイレクトの方が速かったよ
0102名無しさん@お腹いっぱい。2015/10/27(火) 18:45:52.06
それは反論になってない
0103名無しさん@お腹いっぱい。2015/10/27(火) 23:01:18.38
C言語で書いたほうが早かったよ
0104名無しさん@お腹いっぱい。2015/10/27(火) 23:24:17.69
>>103
その書いたやつを見せてください。ぜひとも参考にしたいです
0105名無しさん@お腹いっぱい。2015/10/28(水) 05:47:50.83
system("cat file | command");
0106名無しさん@お腹いっぱい。2015/10/28(水) 06:27:57.97
同じスクリプトでもcatを使うと電解コンデンサがライトアップしやすいよw
0107名無しさん@お腹いっぱい。2015/10/28(水) 07:30:41.83
windowsでいうINIファイルのような、設定情報を格納したファイルを作ろうとしています。

入出力パスとか、オプションのon/off(1か0か)などを書いておき、その設定ファイルを
シェルスクリプト上から読み込んで、処理内容に反映して実行することを想定しています

こういった処理をする場合、業界の一般的な様式みたいな決まりってありますか。
また、いろいろな実装方法が考えられますが、どのようなコマンドで実現するのが適切でしょうか。

busyboxに入ってそうなコマンドが一通り動ける環境を想定しています。
0108名無しさん@お腹いっぱい。2015/10/28(水) 08:21:07.49
>>107
あなたはどんな業界の人ですか?
0109名無しさん@お腹いっぱい。2015/10/28(水) 10:38:06.95
設定ファイル自体をシェルスクリプトにして . しちゃうのが楽じゃね
RedHat系なら /etc/sysconfig/ 以下、Debian系なら /etc/default/ 以下を参考に
0110名無しさん@お腹いっぱい。2015/10/28(水) 11:48:34.73
またbusyboxの人か
0111名無しさん@お腹いっぱい。2015/10/28(水) 11:54:18.98
こうするのが楽とかじゃなくて業界標準でお願いします
0112名無しさん@お腹いっぱい。2015/10/28(水) 12:20:06.26
普通にINIファイル形式でいい
シェルスクリプトから呼べば(実行すれは)環境変数として設定されるようになる
0113名無しさん@お腹いっぱい。2015/10/28(水) 12:21:45.13
ポイントは読み込むんじゃなくて実行させるってこと
readしてexportするんじゃなくてそのまま実行して環境変数に設定する
0114名無しさん@お腹いっぱい。2015/10/28(水) 13:28:25.07
実行はしたくないです。インジェクションされます。。
0115名無しさん@お腹いっぱい。2015/10/28(水) 13:35:42.31
セキュリティが心配なら標準とは対極の方向に向かうべきだろアホか
0116名無しさん@お腹いっぱい。2015/10/28(水) 15:00:41.96
>>109
>>112
>>113

107です、ありがとうございました。ファイルを読ませることしか頭にありませんでしたので、聞いてよかったです。
その方式で、スクリプトの冒頭で設定を担当するコードを実行するようにします。
0117名無しさん@お腹いっぱい。2015/10/28(水) 22:16:32.33
質問してるくせに偉そうだな
0118名無しさん@お腹いっぱい。2015/10/28(水) 23:07:56.69
>>117
具体的にどこが偉そうなの?どこがカンに障るの?
0119名無しさん@お腹いっぱい。2015/10/29(木) 04:20:02.34
教えを乞うてるくせにお腹いっぱいなのが気にくわない。
0120名無しさん@お腹いっぱい。2015/10/29(木) 06:23:24.26
unixの管理をしています。
ユーザーはソフトのインストール禁止ですが、
最近、ユーザーでも自分のホームフォルダーにソフトをコピーし、
X権限をすることによってソフトが実行できてしまうことが判明しました。
これはOSのセキュリティーボールではないのでしょうか?
ユーザーのフォルダーではたとえX権限がされていても
実行できないようなおすすめのunixって何ですか?
必要ならカーネルにバッチを当てる方法も、やもうえません。
0121名無しさん@お腹いっぱい。2015/10/29(木) 07:39:00.78
>>119
お腹いっぱいとは?
0122名無しさん@お腹いっぱい。2015/10/29(木) 08:29:26.09
名前じゃね
0123名無しさん@お腹いっぱい。2015/10/29(木) 09:02:26.07
シェルスクリプトっていう性質上、ある程度仕方ない面もあるけども
最近は余りにもスレ違いな話題が多くないか?
0124名無しさん@お腹いっぱい。2015/10/29(木) 10:15:07.66
スレ違いでも板違いでもかまってもらえるからな
0125名無しさん@お腹いっぱい。2015/10/29(木) 11:15:37.67
>>120
お前脳みそついてなくてUnix使ってんのか?
Windowsでも使ってろよ
希望してることができるから
0126名無しさん@お腹いっぱい。2015/10/29(木) 12:04:46.30
コピペに釣られんな
0127名無しさん@お腹いっぱい。2015/10/29(木) 22:18:02.02
>>123
>>123
0128名無しさん@お腹いっぱい。2015/10/30(金) 11:01:24.94
>>124
軌道修正したレスができるなら相手して構わないんだけど、自演が疑われるような受け売り回答って不要だよな。
0129名無しさん@お腹いっぱい。2015/11/01(日) 13:31:00.57
${@:+"$@"}という変数の記法がわかりません
たとえば/usr/bin/sensible-browserでは
/usr/bin/x-www-browser ${URL:+"$URL"}
のように使われています
なぜこう書くのかヒントをいただけたら…
0130名無しさん@お腹いっぱい。2015/11/01(日) 14:16:24.02
man bash
Parameter Expansion の項(日本語訳では パラメータの展開 の項)
を見るよろし。てか俺がしょっちゅう見直すとこだわソレw
0131名無しさん@お腹いっぱい。2015/11/02(月) 12:13:01.41
ポータビリティーの話( "$@"; が 何も無し にならないで、""; と解釈されてしまう対策の事 )が参考になるかな

What does ${1+"$@"} mean?
http://www.in-ulm.de/~mascheck/various/bourne_args/

Autoconf
http://www.geocities.jp/fut_nis/html/autoconf-ja/Shell-Substitutions.html#Shell%20Substitutions


# 例えば、 $URL が未定義や、ヌルなら
/usr/bin/x-www-browser "$URL"
# は、この様な意味になるが
/usr/bin/x-www-browser ""

/usr/bin/x-www-browser ${URL:+"$URL"}
# は、こうなる
/usr/bin/x-www-browser


test.sh 引数の数に違いが出る(bash の方で理解しやすいので #!/bin/bash で)
#!/bin/bash -vx
foo="hoge"
bar=""
bash -vxc 'echo "$#, " "$@"' "dummy" "$foo"
bash -vxc 'echo "$#, " "$@"' "dummy" "$bar"
bash -vxc 'echo "$#, " "$@"' "dummy" "$baz"
bash -vxc 'echo "$#, " "$@"' "dummy" ${bar:+"$bar"}
bash -vxc 'echo "$#, " "$@"' "dummy" ${baz:+"$baz"}
01321292015/11/02(月) 14:09:15.67
>>130
アドバイスありがとうございます。自分もよくそこ見ます

環境はlinuxのbashなのですが、"$@"と書いておけば
${@:+"$@"}と結果的に同じになるはずなのに
わざわざ後者のように書くのはどうしてかなと疑問に思った次第です
01331292015/11/02(月) 14:12:02.34
>>131
有益な情報ありがとうございます
なるほど"$@"が""になってしまうことがあるためなのですね
違いを確認するためのスクリプトまで用意していただいて感謝です
おかげで長い間疑問だったことが氷解しました

/usr/bin/sensible-browserは、#!/bin/shですし
ポータビリティを十分に考えて作られているわけですね
なぜAdobeのacroreadなどでも使われているか納得できました
とっても勉強になりました
01341312015/11/03(火) 18:32:53.39
>>133
> ポータビリティを十分に考えて作られているわけですね
/usr/bin/sensible-browser は、Debian 系で使われているスクリプトのようなので
dash で動けば十分でしょう
ポータビリティのサイトは参考になるかと貼りましたが、${1+"$@"} と違って
/usr/bin/x-www-browser ${URL:+"$URL"} の場合、関係無いかと思います

念の為 dash 等で内容がヌルの場合に、"$URL" と、 "$@" で展開の結果に違いが有る事を、強調しておきます
LANG=C PAGER='less -p "Special Parameters"' man dash
> @   Expands to the positional ...略... If there
> are no positional parameters, the expansion of @ generates
> zero arguments, even when @ is double-quoted.
0135名無しさん@お腹いっぱい。2015/11/04(水) 10:19:47.91
ADB shellを使ってるのですが.shで保存したadbのスクリプトを順番に実行させることって可能ですか?
例えばダブルクリックした時点で1.shが動いて〜10秒後に2.shを動かして〜というような感じにしたいです。
お力貸していただけると幸いです。
0136名無しさん@お腹いっぱい。2015/11/04(水) 12:50:56.08
ADB shellを実行するのがWindowsかlinuxによってバッチかシェルスクリプトかでわかれるが、
最初に/data/local/tmpあたりに転送して、chmodして、それをwait含めて実機で実行するのが
良いんじゃないの。

何をやりたいのか書いてないのでアレだが、操作する側で10秒開けるのか、実機で10秒ウェイトするのか。
あと、なぜ10秒あける必要があるのか、10秒後までに実行した端末で何が起きているのか、
その判定は必要なのか、などを考える必要があるし、
さらには泥のことをよく理解できてないオッサンたちが、こういう話題は、ここではスレチじゃね?
と煽ってくるので、飛来するオッサンたちを黙らせる技術も必要とされる
0137名無しさん@お腹いっぱい。2015/11/04(水) 13:12:49.86
すみません 記述が足りてないようでした。
現在はwindowsでbatファイルを利用してuwscというフリーソフトを使って1.batを起動させて〜10秒後に2.batといった具合にやってます。
最近linuxでも開発を始めたいと思い同じようなことがしたいです。
シェルスクリプトでwindowsでやってるuwscのような制御ができないかなぁと思って質問させていただきました。
そんなめんどくさいことするよりlinuxならこのフリーソフト使って制御しとけみたいなのがあれば
教えていだだけると幸いです。
0138名無しさん@お腹いっぱい。2015/11/04(水) 13:15:27.82
>uwscというフリーソフトを使って1.batを起動させて〜10秒後に2.batといった具合に

この10秒後に、という処理自体をbatでやればいいんじゃないの?
なぜuwscを挟む必要があるの?
0139名無しさん@お腹いっぱい。2015/11/04(水) 13:29:28.23
>>138 おっしゃる通りなのですがcallを使って次のbatを呼び出すことよりも先にツールを使って呼び出すことを覚えてしまったもので・・・
独学でやってるうえに無知な状態からまだ2ヶ月くらいしか経ってないものでこのスレのレベルの方からしたら程度が低い質問かもしれませんが他に聞けるような環境がないもので;;
0140名無しさん@お腹いっぱい。2015/11/04(水) 13:33:00.98
あとは、何をやりたいのか具体的に書くしか

ちなみにゲームの自動制御とか、その手の話だったら俺は降りる
0141飛来したオバハン2015/11/04(水) 13:33:27.01
アンタ泥とかwindowsとかイタチじゃないの?
0142名無しさん@お腹いっぱい。2015/11/04(水) 17:24:19.98
PATH の dirctory に無いスクリプトは、相対、絶対パスで起動するか、PATH に追加する
例えばカレントディレクトリのスクリプトは、
./script.sh
で起動出来る
ダブルクリックで起動するには、 .desktop ファイル作る

#!/bin/sh
./1.sh
sleep 10
../2.sh

/home/username/bin/3.sh

PATH="/home/username/bin:$PATH"
4.sh

PATH=".:$PATH"
1.sh
0143名無しさん@お腹いっぱい。2015/11/04(水) 17:24:50.70
又は、android 上で launcher.sh を書いておいて起動する
それをアプリから起動するなら、GScript Lite とか使うんや。よー知らんけど

#!/system/bin/sh
./1.sh
sleep 10
./2.sh

ついで

@echo off
call 1.bat
ping localhost -n 11 > nul
call 2.bat
0144名無しさん@お腹いっぱい。2015/11/04(水) 21:13:41.29
みなさんありがとうございました。すこし足がかりが得られました。
やっぱりlinuxのほうが軽くて動作も安定してる感じなのでこれからはlinux中心にデバッグを行っていけたらと思います。
0145名無しさん@お腹いっぱい。2015/11/08(日) 19:54:14.49
echoで\tを出力してるんだけど
raspbianだとTABに置き換わってるんだけど
Sientific Linuxだと\tのままなんだけど何でかわかる?
シェルスクリプトをそのまま持っていって実行したら
そんな感じになってた・・・
■ このスレッドは過去ログ倉庫に格納されています