シェルスクリプト総合 その24at UNIX
シェルスクリプト総合 その24 - 暇つぶし2ch200:名無しさん@お腹いっぱい。
15/01/08 12:15:36.60 .net
GPL V3
4. Conveying Verbatim Copies.
5. Conveying Modified Source Versions.

201:名無しさん@お腹いっぱい。
15/01/08 13:17:19.27 .net
>>200
詳しく

202:名無しさん@お腹いっぱい。
15/01/08 18:53:35.81 .net
質問です
22, 32, 33, 45,
12, 47, 78, 44, 32,
...
数字がカンマで区切って700個書いてあるファイルがあります。
一行に数字が何個あるか規則性はありません。
このファイルを読み込んで数字を100個ずつ出力して7枚のファイルを
作りたいと思っています。シェルスクリプトでうまくできますでしょうか。
出力されたファイルには数字が一列で入っているほうがいいです。
お願いします。

203:名無しさん@お腹いっぱい。
15/01/08 19:41:16.46 .net
GNU awk 限定

awk -v RS='' -v FPAT='( *[0-9]+, *\n?){1,100}' \
'{
for(i=1;i<=NF;i++){
gsub(" *\n"," ",$i);
gsub(", *$","",$i);
print $i > i ".txt";
}
}' a.txt

上手く行けば 1.txt ... 7.txt というファイルができるはず

204:名無しさん@お腹いっぱい。
15/01/08 20:20:07.70 .net
gawk じゃなくてふつーの awk で。

awk -v RS=, '{print $0+0 > int(NR/100)+1 ".txt" }'

205:名無しさん@お腹いっぱい。
15/01/08 20:36:37.66 .net
int((NR-1)/100)+1 じゃないとダメだった。

206:203
15/01/08 20:51:41.18 .net
あ、カンマはいらないのね

207:203
15/01/08 20:56:03.24 .net
なおかつ1列を1行と読み間違えていた(´・ω・`)ショボーン

208:名無しさん@お腹いっぱい。
15/01/08 21:09:50.76 .net
ファイル分割が有るし、awkでやる方が良いだろうけど、sedで
見易さの為-r付けてます

#!/bin/sh
sed -re '
 :loop;
 $! {
  N;
  b loop;
 }

 s/,[ \n]+/, /g;
 s/([0-9]+, ){100}/&\n/g;
' | {
 i=1
 while read line
 do
  echo "$line" > "$(( i++ )).txt"
 done
}

209:名無しさん@お腹いっぱい。
15/01/08 21:43:46.83 .net
awkもsedも出ちまったか

tr -d '\r\n' < file

210:名無しさん@お腹いっぱい。
15/01/08 21:52:48.42 .net
set -- `sed 's/,/ /g' input.txt`
i=1
while [ $i -le 7 ]; do
(j=1; while [ $j -le 100 ]; do echo "$1"; shift; done) > $i.txt

211:209
15/01/08 21:57:31.95 .net
ミス

tr -d '\r\n' < file | tr ',' '\n' | split -l 100

212:名無しさん@お腹いっぱい。
15/01/08 21:58:20.67 .net
考えてる途中で送っちゃった。やり直し

set -- `sed 's/,/ /g' input.txt`
i=1
while [ $i -le 7 ]; do
(j=1; while [ $j -le 100 ]; do echo "$1"; shift; j=$((j + 1)); done) > $i.txt
shift 100
i=$((i + 1))
done

213:209
15/01/08 22:01:45.08 .net
>>212
お前は俺か

214:名無しさん@お腹いっぱい。
15/01/08 23:07:34.58 .net
/ *, */を改行に変換してhead

215:名無しさん@お腹いっぱい。
15/01/09 00:45:24.74 .net
#!/bin/sh
file=`cat "$1"`
for i in `seq 1 7`; do
for j in `seq 1 100`; do
echo -n ${file%%,*}, >>$i.txt
file=${file#*,}
done
done

216:名無しさん@お腹いっぱい。
15/01/09 01:53:20.06 .net
GNU grep and GNU parallel

$ grep -Po '[0-9]+' data.txt | parallel --pipe -L 100 -n 1 -k 'cat - > {#}.txt'

217:名無しさん@お腹いっぱい。
15/01/09 01:59:25.49 .net
211と216を足して

$ grep -o '[0-9]\+' data.txt | split -l 100

218:名無しさん@お腹いっぱい。
15/01/10 02:47:23.50 xezKGq2J7
.net が書き込めなくなったな
とりあえずscから見ているが

219:202
15/01/11 18:59:23.53 .net
>>203-217
ありがとうございます。本当に助かりました。
勉強不足を痛感。向上心を刺激されました。

220:名無しさん@お腹いっぱい。
15/01/14 13:42:56.50 .net
$SEARCH に入れても awkが動いてくれません
{}が引っかかってしまったのだろうか? どうすればよいのだろうか?

while true
do read SEARCH
awk 'BEGIN{RF="---"}/${SEARCH}/' $save_to
done

221:名無しさん@お腹いっぱい。
15/01/14 13:55:03.85 .net
シングルクォートで囲まれてるから置換されないのよ

222:名無しさん@お腹いっぱい。
15/01/14 14:41:45.54 .net
>>221
多少書き換えてみました
しかし、まだ動きません

clp.sh
do read SEARCH
export SEARCH
awk -f ~/sbin/h_Searher.awk $save_to
done

~/sbin/h_Searher.awk
BEGIN{RF="---"}/$SEARCH/

223:名無しさん@お腹いっぱい。
15/01/14 17:08:45.99 .net
perlで書いてしまった
たった1行のためにつまずくとは悔しい

do
 perl ~/Perl_instance/clp.pl
done


~/Perl_instance/clp.pl
open FH, '<', '$save_toと同じファイル';
my @LOG = <FH>;
close FH;

my $sentence = join ' ', @LOG;
my @field = split /---/, $sentence;

# my $search = "Ano";
chomp(my $search = <STDIN>);
for my $lines (@field) {
  if ( $lines =~ m/${search}/ ) {
    print "---\n";
    print "$lines\n";
  }
}

224:名無しさん@お腹いっぱい。
15/01/15 10:05:06.27 .net
>>220
awk 'BEGIN{RF="---"}/'${SEARCH}'/' $save_to

225:名無しさん@お腹いっぱい。
15/01/15 12:37:55.02 .net
>>224
thanks!

226:名無しさん@お腹いっぱい。
15/01/15 13:19:56.10 .net
そして、$SEARCHにインジェクションされましたとさ。

227:名無しさん@お腹いっぱい。
15/01/15 18:30:18.23 .net
GNU awk ならこんなのも

awk -v SEARCH="$SEARCH" 'BEGIN{RF="---"}/SEARCH/' $save_to

228:名無しさん@お腹いっぱい。
15/01/20 01:40:59.45 .net
こんな雑誌があることを初めて知った。
なんと月刊で20号以上出ているということにも驚いた。

シェルスクリプトマガジン vol.21
URLリンク(www.amazon.co.jp)
URLリンク(www.usp-lab.com)

229:名無しさん@お腹いっぱい。
15/01/20 05:22:18.17 .net
その雑誌の半分はシェルスクリプト関係ない内容だから相当ネタがないんだろなって思った

230:名無しさん@お腹いっぱい。
15/01/21 01:45:14.76 .net
ツールドフランスの実況が森の景色の解説になってるようなもんか

231:名無しさん@お腹いっぱい。
15/01/22 16:29:19.37 .net
コマンドラインから手入力するとちゃんと動くスクリプトが、cronからだと動かない。
数日悩んだ結果。。。原因はLANGだった

232:名無しさん@お腹いっぱい。
15/01/22 16:32:53.58 .net
ルンゲの罠

233:名無しさん@お腹いっぱい。
15/01/22 16:48:29.41 .net
>>231
まれによくある。

スクリプトの先頭付近でLANGを設定しちゃうことも多いんだけど、Unix的でクールな
ポータビリティのある手法を紹介してくれる偉い人が出てくるのを正座して待ちたい。

234:名無しさん@お腹いっぱい。
15/01/22 17:14:56.12 .net
LANG=C

235:名無しさん@お腹いっぱい。
15/01/23 06:42:51.72 .net
偉い人が
 共通したものは crontab 先頭で、タスク毎のは env NAME=VALUE COMMAND
と答えるか、もうまるっきり答えないと予想した

236:名無しさん@お腹いっぱい。
15/01/23 10:00:16.40 .net
共通したものは crontab 先頭で、タスク毎のは env NAME=VALUE COMMAND

237:名無しさん@お腹いっぱい。
15/01/23 16:52:05.70 .net
偉い人のコピペ北ー!
自演っぽくて、コメントしづらい輪

238:名無しさん@お腹いっぱい。
15/01/23 17:30:03.53 .net
この話はここで終わりって暗に言ってるんだろう

239:名無しさん@お腹いっぱい。
15/01/24 10:11:24.87 .net
LANG=C sl
的な書き方ってどこまで有効なのかな?
bashだけ?

240:名無しさん@お腹いっぱい。
15/01/24 10:23:49.81 .net
>>239
bourne shell でも使える

241:名無しさん@お腹いっぱい。
15/01/24 15:26:45.88 .net
配列の命名規則ってある?

242:名無しさん@お腹いっぱい。
15/01/24 15:41:53.70 .net
ない

243:240
15/01/25 04:39:03.74 .net
みんなはどうしてる?
しっくりくる表記法がないんだけど

244:名無しさん@お腹いっぱい。
15/01/25 05:18:01.83 .net
しっくりこない表記がワカラナイ

245:名無しさん@お腹いっぱい。
15/01/25 11:18:23.60 .net
配列は邪教
使わないので規則などない

246:名無しさん@お腹いっぱい。
15/01/25 11:45:02.72 .net
>>245
同意

247:名無しさん@お腹いっぱい。
15/01/25 12:36:31.55 .net
配列って変数名に連番を入れたりして使うことかと思ってたw

248:名無しさん@お腹いっぱい。
15/01/25 13:47:36.00 .net
>>245,245
じゃあ代わりにどうすればよいのだ?
まさかコピペ?

249:名無しさん@お腹いっぱい。
15/01/25 17:38:43.45 .net
ポインタとか言い出すと見た

250:名無しさん@お腹いっぱい。
15/01/25 19:40:14.84 .net
あほらし

> じゃあ代わりにどうすればよいのだ?
> ポインタとか言い出すと見た
いかにも、めんどくさそう

251:名無しさん@お腹いっぱい。
15/01/25 19:46:57.10 .net
会話するネタがないんだなぁ……

252:名無しさん@お腹いっぱい。
15/01/25 21:21:36.60 .net
じゃあおれからネタ
xargsコマンドが好き。無理だと思ってた処理がワンライナーになる
いっそ、powershellみたいにjsonパイプラインみたいなのがあればいいのにって思う

253:名無しさん@お腹いっぱい。
15/01/25 22:41:49.00 .net
俺がよく使うのはfind ... | xargs grep だったかな
他どんな場面で使うっけ

254:名無しさん@お腹いっぱい。
15/01/25 23:37:38.84 .net
\ls -1t *.* |head -3|xargs head

255:名無しさん@お腹いっぱい。
15/01/26 12:06:00.33 .net
>>236

*.*の3行が、headへの標準入力じゃなくて、引数として与えられるのか。
おもしろいなあ。

256:名無しさん@お腹いっぱい。
15/01/26 20:35:10.75 .net
xargs で何か面白い事は無いかと、あれこれ考えた結果
ループになる
xargs loop で検索したら結構見つかるので
珍しくは無いんだろうが、まあ、一応

<<EOF xargs -I i sh -c 'seq 3 | xargs -I j echo i j'
foo bar
baz qux quux
corge
grault
EOF

257:名無しさん@お腹いっぱい。
15/01/27 02:26:05.37 .net
xargs は並列処理でもよく使うかな
例えば find ... | xargs -P 12 -n 16 gzip とすると12プロセスがファイルの圧縮を行う

258:名無しさん@お腹いっぱい。
15/01/27 03:09:32.08 .net
\nをファイル名に仕込まれて爆死する

259:名無しさん@お腹いっぱい。
15/01/27 06:47:01.92 .net
find ... -print0 | xargs ... -0 ... ってしとけばええやん…

260:名無しさん@お腹いっぱい。
15/01/27 07:02:05.92 .net
\0をファイル名に仕込まれて(ry

261:名無しさん@お腹いっぱい。
15/01/27 07:38:50.39 .net
仕込めるんだっけ?

262:名無しさん@お腹いっぱい。
15/01/27 08:17:49.81 .net
find ‥ -print0 を知らん奴もいるんだな w

263:名無しさん@お腹いっぱい。
15/01/27 08:20:05.07 .net
>>261
API だと思い付かない
ディスクを直接バイナリ編集すれば可能かも

264:名無しさん@お腹いっぱい。
15/01/27 08:25:13.28 .net
>>262
実装によってはないのよ

265:名無しさん@お腹いっぱい。
15/01/27 08:28:26.16 .net
solarisにはまだない

266:名無しさん@お腹いっぱい。
15/01/27 12:18:24.66 .net
>>264
移植すりゃいいじゃん

267:名無しさん@お腹いっぱい。
15/01/27 12:56:34.51 .net
大抵は
-exec {} +
で用が足りる

268:名無しさん@お腹いっぱい。
15/01/27 13:01:19.27 .net
>>263
カーネル内でもファイル名は0終端で扱ってるから無理だね
実際のサイズと異なる事でカーネルクラッシュなどまずいことが発生する可能性は
あるけど、それは普通にカーネル内バグ

269:名無しさん@お腹いっぱい。
15/01/27 13:29:38.19 .net
>>266
そういう話じゃないよ

270:名無しさん@お腹いっぱい。
15/01/27 13:41:29.10 .net
>>269
半分冗談だよ、いちいち気にしてたら禿げるぞ

271:名無しさん@お腹いっぱい。
15/01/27 13:43:51.02 .net
冗談に見えないし、
冗談だとしても面白くないよ

272:名無しさん@お腹いっぱい。
15/01/27 15:15:56.23 .net
大抵は
-exec \{\} +
とエスケープなりクォートで囲むなりするのを忘れる

273:名無しさん@お腹いっぱい。
15/01/27 16:27:07.47 .net
{}をquoteしなきゃならないカタワ専用シェルって何?

274:名無しさん@お腹いっぱい。
15/01/27 21:10:27.07 .net
-execはなんか怖いんだよなぁ
理由はないんだけど

275:DAEMON
15/01/27 21:45:21.58 .net
>>273
 シ
タッ・・(Φ Φ+)・・・ 恐らく Perl です

276:DAEMON
15/01/27 22:02:58.78 .net
>>275
 シ
タッ・・(Φ Φ+)・・・ 例えば、基礎公文で…

while (test) {
       open test-file.txt(filehandle) ,
          ">test-file.pl"
       print test-file.txt
    close test-file.txt
}

斯様な様にですか…

277:名無しさん@お腹いっぱい。
15/01/28 00:14:24.97 .net
>>272
で、{}をクォートする必要があるシェルって何?

278:名無しさん@お腹いっぱい。
15/01/30 19:56:12.76 .net
wait入れるsleepだが、引数が整数だけだろと思ってたら、整数じ
ゃなくてもいいというので、0.1入れてやってみたら、ほんとに動
作してるっぽい。manには何も書いておらん。つかえねーman

279:名無しさん@お腹いっぱい。
15/01/30 20:00:01.61 .net
うちのsleepはGNUだけど man sleep すると info 見ろって書いてあって、info 見たら:
Historical implementations of `sleep' have required that NUMBER be
an integer, and only accepted a single argument without a suffix.
However, GNU `sleep' accepts arbitrary floating point numbers (using a
period before any fractional digits).

280:名無しさん@お腹いっぱい。
15/01/30 21:57:35.82 .net
>>279
おお、サンクス

281:名無しさん@お腹いっぱい。
15/01/31 12:09:54.06 .net
>>274
客先環境での操作なんかだとおおいにある
xargsなら、-pとか-tがあるので安心

282:名無しさん@お腹いっぱい。
15/01/31 13:19:36.31 .net
>>281
同意が得られて異端じゃないと安心出来た
尚就職してから今まで客先環境でしか働いたことがない模様

283:名無しさん@お腹いっぱい。
15/01/31 17:47:20.57 .net
こうじゃなくて
v=${v:-default}
こうでしょ
: ${w:=default}
っていうの有りますか?皆さんの、そういうの教えて下さい

284:名無しさん@お腹いっぱい。
15/02/01 00:46:16.74 .net
こうじゃなくて
echo -e 'hoge\nfuga'
こうでしょ
printf 'hoge\nfuga\n'

285:名無しさん@お腹いっぱい。
15/02/01 00:47:04.51 .net
俺はecho派

286:名無しさん@お腹いっぱい。
15/02/01 07:05:52.05 .net
公文い公文

287:名無しさん@お腹いっぱい。
15/02/01 13:49:52.79 .net
echo は -e が必要だったり不要だったりモノによってバラバラなんで printf だなぁ。
OSX の /bin/sh は bash だけど、同じ bash のはずなのに
bash -c "echo -e 'hoge\nfuga'" と sh -c "echo -e 'hoge\nfuga'" で
結果が違うとかめんどくさすぎる。

288:名無しさん@お腹いっぱい。
15/02/01 18:28:40.97 .net
似た様なのだけど、
こうじゃなくて
function f () {
echo hoge hoge
}
こうでしょ
f () {
echo hoge hoge
}

289:名無しさん@お腹いっぱい。
15/02/01 19:10:32.63 .net
個人的には上なんだけど
最近やってるのがjavascriptだからかな

290:名無しさん@お腹いっぱい。
15/02/02 10:43:19.51 .net
変数は大文字か小文字か。
個人的には環境変数と区別するために小文字なんだけど、
社内の他の人が書いたのを見ると大文字ばっかりなんだよな。

291:名無しさん@お腹いっぱい。
15/02/02 12:18:06.01 .net
いつexportしても問題が出ないような命名規則なら問題無しw

292:名無しさん@お腹いっぱい。
15/02/02 21:56:58.79 .net
質問です。
linux mint 17.1 でコマンドの練習してるのですが、
% ls -l
だと色々ずらーっと出るんですけど、本に書いてあるとおり、
ソートコマンドを練習しようとして
% ls -l | sort +4
と打ち込んでファイルサイズで降順ソートしたかったのですが
sort: cannot read: +4: そのようなファイルやディレクトリはありません
と出てしまいます。
bashですが、シェルの種類によってはこのオプション使えないんでしょうか。
-r等は正常に動作します。

293:名無しさん@お腹いっぱい。
15/02/02 22:04:13.81 .net
sort -k4
sort -k4r

294:名無しさん@お腹いっぱい。
15/02/02 22:34:00.27 .net
で、できました!有り難うございます!

295:名無しさん@お腹いっぱい。
15/02/03 03:09:11.93 .net
>>292-294
sort +4と同じ指定はsort -k5
たぶんls -lでファイルの所有者が全て同じで、できたと勘違いしてる
--debugオプションをつけるとわかりやすい
URLリンク(www.gnu.org)
> On older systems, sort supports an obsolete origin-zero syntax ‘+pos1 [-pos2]’ for specifying sort keys.
> The obsolete sequence ‘sort +a.x -b.y’ is equivalent to ‘sort -k a+1.x+1,b’ if y is ‘0’ or absent,
> otherwise it is equivalent to ‘sort -k a+1.x+1,b+1.y’.
sort +4という古いオプションの扱いはPOSIXのバージョンによるってことかな
URLリンク(www.gnu.org)

296:名無しさん@お腹いっぱい。
15/02/03 06:48:02.67 .net
Linux だったら ls コマンドは GNU coreutils の ls だろうから、
$ ls -l --sort=size
or
$ ls -lS
でええじゃまいか

297:名無しさん@お腹いっぱい。
15/02/03 08:37:05.99 .net
( 検索結果で上位に上がると期待して ) 日本語訳を貼り付けておきます
URLリンク(linuxjm.sourceforge.jp)
URLリンク(linuxjm.sourceforge.jp)

298:確認不足だった orz
15/02/03 08:40:20.78 .net
訂正
( 検索結果で上位に上がると期待して ) 日本語訳を貼り付けておきます
URLリンク(linuxjm.sourceforge.jp)
URLリンク(linuxjm.sourceforge.jp)

299:名無しさん@お腹いっぱい。
15/02/04 22:55:20.92 .net
>>298
おお、infoの日本語訳できたんだ
man on WWWのように検索できるとさらにいいね

300:名無しさん@お腹いっぱい。
15/02/08 15:04:24.54 .net
よく使うワンライナーなどはどうやって呼び出すものなんですか?
何か簡単に管理する方法がありませんかね?

301:名無しさん@お腹いっぱい。
15/02/08 15:06:57.37 .net
zshならzawから
vimのUnite historyの様なgrep効くから、それで呼ぶか
編集して完成させる

302:名無しさん@お腹いっぱい。
15/02/08 16:40:17.45 .net
>>301
anything.elみたいなヒストリーサーチみたいですね。
bashなのでどうしたものか。

303:名無しさん@お腹いっぱい。
15/02/09 09:34:08.43 .net
>>300
aliasじゃないの?

304:名無しさん@お腹いっぱい。
15/02/09 10:04:38.99 .net
自分で書いたスクリプトはいつでも、一見、間違いのないように見えるw

305:名無しさん@お腹いっぱい。
15/02/09 18:00:27.27 .net
まったくだ(´・ω・`)
ぼくの書いたスクリプトが動かないなんてけしからん(´・ω・`)
シェルの方を治したまえ

306:名無しさん@お腹いっぱい。
15/02/09 18:21:02.80 .net
cygwinからLinuxに移植したシェルスクリプトが,ping部分で成功しなかった

declare -A URL
URL=(
  ["Vim_part24"]="スレリンク(unix板)"
  ["vim_part5"]="スレリンク(software板)"
  )
# ping for download
ping_error=0
for i in ${!URL[@]}
do
  # ping ${URL[$i]} > /dev/null
  ping -n 1 `echo ${URL[$i]} | awk -F"/" '/http/{print $3}'` > /dev/null
  if [ "$?" -ne 0 ]; then
    echo "${i} : can not contact ${URL[$i]}"
    ping_error=1
  fi
done

307:名無しさん@お腹いっぱい。
15/02/09 18:41:13.94 .net
ping -c 1 ... にするべきじゃないの?
pingのコマンドオプションって統一されてないよなぁ

308:名無しさん@お腹いっぱい。
15/02/09 19:27:08.45 .net
配列を使うのはダサいと思うのです。
#!/bin/sh
url_list='
Vim_part24 スレリンク(unix板)
vim_part5 スレリンク(software板)
'
ping="ping -w 3 -c 1"
echo "$url_list" | while read thr url __; do
case "$url" in
https?://*)
host=`echo $url | cut -d/ -f3`
if ! $ping $host >/dev/null; then
echo "$thr: cannot contact $url"
err=1
fi
;;
esac
done
exit $err

309:名無しさん@お腹いっぱい。
15/02/09 19:28:49.19 .net
ああ、case の条件部分がおかしい。
URLリンク(*|fhttp:)">URLリンク(*|URLリンク(search.cpan.org)
てのがあった
このままじゃ使いものにならんけどね

411:名無しさん@お腹いっぱい。
15/03/12 16:01:30.66 .net
ちょっとお知恵を拝借したい
テキストファイルを検索して見つけた行数を取得したいときって
grep -nで行数出力させて取得するのが一番シンプルかな?
マッチする最終行にしたい場合はtailと組み合わせてさ
ちなみにシェル知らなかったころってreadで1行ずつ読み込んで判断してたw

412:名無しさん@お腹いっぱい。
15/03/12 16:32:34.70 .net
「一番」って難しいこと聞くね

413:名無しさん@お腹いっぱい。
15/03/12 18:00:51.55 .net
>>411
grep -c

414:名無しさん@お腹いっぱい。
15/03/12 18:40:40.82 .net
>>413
オマエいつも問題の意味取り違えて回答して点数もらえないタイプだろw

415:名無しさん@お腹いっぱい。
15/03/12 20:35:27.12 .net
>>414
ん?
質問:検索して見つけた行数を取得したい
cオプション: 検索条件にマッチした行数を表示する

416:名無しさん@お腹いっぱい。
15/03/12 20:36:26.22 .net
>>414
あ、わかった
質問は行番号のことを行数といっているのね

417:名無しさん@お腹いっぱい。
15/03/12 20:36:37.62 .net
>>415
まだわかってないのか…重症?

418:名無しさん@お腹いっぱい。
15/03/12 21:26:36.04 .net
ちょっとwc

419:名無しさん@お腹いっぱい。
15/03/12 22:07:04.23 .net
>>418
オプションなしだと複数返すコマンドだよね

420:名無しさん@お腹いっぱい。
15/03/13 00:23:15.74 .net
行数と行番号じゃ、意味が違うな。
日本語に不自由してるのぅ

421:名無しさん@お腹いっぱい。
15/03/13 01:03:30.38 .net
grep -nで出力されるのは行数ではないね

422:名無しさん@お腹いっぱい。
15/03/13 01:16:54.86 .net
なんかgrep -c言ってる人がバカにされてるけど
>grep -nで行数出力させて取得するのが一番シンプルかな?
>マッチする最終行にしたい場合はtailと組み合わせてさ
これから察するに、行数と書いてはいるが、実際は行数じゃなくて行番号のこと言ってるんじゃないの?
マッチした行数が知りたいなら最終行の話なんて出てこないだろ
つまり本当にバカなのは>>417と推測
まぁ質問主から続きがなければ有耶無耶だが

423:421
15/03/13 01:17:57.58 .net
俺何言ってんだ?
すまん眠かったってことで何も見なかったことにしてくれ……死ぬ……

424:名無しさん@お腹いっぱい。
15/03/13 04:43:04.00 .net
行数、直訳すると line number

425:名無しさん@お腹いっぱい。
15/03/13 07:28:39.51 .net
line countじゃないの?

426:名無しさん@お腹いっぱい。
15/03/13 07:40:15.74 .net
直訳、と言ってるだろ。
natural number = 自然数
complex number = 複素数
number = 数

427:名無しさん@お腹いっぱい。
15/03/13 08:04:07.16 .net
>number = 数
ちがう。

428:名無しさん@お腹いっぱい。
15/03/13 08:20:54.53 .net
違うの知ってて言ってんでしょ

429:名無しさん@お腹いっぱい。
15/03/13 11:04:35.04 .net
順序数?

430:名無しさん@お腹いっぱい。
15/03/13 13:12:27.06 .net
行番号を行数と呼ぶ人がいるとして、その人は行数を何と呼ぶのでしょうかね。行の数?

431:名無しさん@お腹いっぱい。
15/03/13 17:11:36.57 .net
行回数

432:名無しさん@お腹いっぱい。
15/03/14 01:06:12.05 .net
行数はnumber of linesだろ
Fランもたいがいにせいよ

433:名無しさん@お腹いっぱい。
15/03/14 02:26:16.92 .net
>>411
まあgrepでいいと思う
grep -n regexp FILE | tail -n1 | cut -d: -f1
awk /regexp/'{print NR}' FILE | tail -n1
sed -n /regexp/= FILE | tail -n1

434:名無しさん@お腹いっぱい。
15/03/14 04:57:44.74 .net
>>432
行数は line count (だからこそ grep -c )

435:名無しさん@お腹いっぱい。
15/03/14 05:17:25.87 .net
count number of lines じゃね
てかどーでもいいよ
行数にしろ行番号にしろ質問者が具体例を明示してる時点で誤解しようがないだろ
早がってんしたエスパースキルゼロのうっかりさんが
早漏の言い訳をぐだぐだぐだぐだぐだぐだぐだぐだぐだぐだ
くだらねー

436:名無しさん@お腹いっぱい。
15/03/14 05:44:10.73 .net
それは「行数を数えろ」だろ
中卒もたいがいにしとけ

437:名無しさん@お腹いっぱい。
15/03/14 07:03:54.77 .net
>>436
countは動詞だけじゃなく名詞にもなるんだよ、知らなかった?

438:名無しさん@お腹いっぱい。
15/03/14 08:50:28.21 .net
へー

439:名無しさん@お腹いっぱい。
15/03/14 18:41:01.09 .net
>>437
名詞が連続してるが、それはどう言い訳するんだ?

440:名無しさん@お腹いっぱい。
15/03/14 21:16:03.47 .net
URLリンク(www.gnu.org)
-c
--count
Suppress normal output; instead print a count of matching lines for each input file. With the -v (--invert-match) option, count non-matching lines. (-c is specified by POSIX.)

441:名無しさん@お腹いっぱい。
15/03/15 00:27:31.56 .net
一行の中に、
bbbbaaa124iiiiiccccaaaa456lllllddddaaa789と書いてあった場合に、
特定の文字列の後に続いている数字を、スペース空けて抜き出す書き方はないでしょうか
うえの場合だとaaaの後にあるものを抜き出すように、124 456 789のような・・
素人質問ですいませんがよろしくお願いします

442:名無しさん@お腹いっぱい。
15/03/15 01:12:54.15 .net
GNU grep が使えるなら
$ echo "bbbbaaa124iiiiiccccaaaa456lllllddddaaa789" | grep -Po '(?!aaa)[[:digit:]]+' | tr '\n' ' '

443:名無しさん@お腹いっぱい。
15/03/15 02:09:05.45 .net
>>442
できました!
使わせていただきます。ご親切にありがとうございました。

444:名無しさん@お腹いっぱい。
15/03/15 03:20:18.84 .net
追加で質問したいのですが、
上の例でbbbbaaa124iiiiicccc222aaaa456lllllddddaaa789とあった場合に、
aaaの直後でない222は省いて124 456 789だけ方法はないでしょうか
何度もすいません

445:名無しさん@お腹いっぱい。
15/03/15 03:27:09.47 .net
grep -Po '(?<=aaa)\d+'

446:名無しさん@お腹いっぱい。
15/03/15 03:50:51.90 .net
>>445
完璧にできました!
この時間に回答いただけるとは思いませんでした。
大変助かりました。ありがとうございました。

447:名無しさん@お腹いっぱい。
15/03/15 13:29:40.91 .net
何度もすいません
上の例で、bbbbaaa0.24iiiiicccc2.22aaaa456lllllddddaaa7.89 など
小数点も含む数字が混じっている場合に、同様の条件で0.24 456 7.9を抜き出す方法はないでしょうか
あまりにも聞きすぎなので最後にしようと思います。

448:名無しさん@お腹いっぱい。
15/03/15 14:11:57.45 .net
こうかなぁ…
grep -Po '(?<=aaa)\d+(\.\d+)?
でもこれだと、".01" とかにはマッチしないけどね。
それと、"1.2.3" なんて文字列があると、"1.2" にマッチしちゃう。

449:名無しさん@お腹いっぱい。
15/03/15 14:12:54.78 .net
ちったぁ自分で考えな
過去2回の答えがなぜそうなるのかを考えれば応用でいけるはずだ

450:名無しさん@お腹いっぱい。
15/03/15 14:15:07.46 .net
grep -o 'aaa[0-9\.][0-9\.]' | tr '\n' ' '

451:名無しさん@お腹いっぱい。
15/03/15 14:16:19.36 .net
ミス
grep -o 'aaa[0-9\.][0-9\.]*' | sed 's/aaa//g' | tr '\n' ' '

452:名無しさん@お腹いっぱい。
15/03/15 14:37:30.13 .net
>>448
grep -Po '(?<=aaa)\d+(\.\d+)?(?=[^\d.]|$)'

453:名無しさん@お腹いっぱい。
15/03/15 14:52:31.67 .net
>>448
>>450
>>451
再度ありがとうございました。
私のファイルのケースですと450さんのやり方で完全にできました!
大変助かりましたし、勉強になりました。ありがとうございました。

>>449
本当そうしようと思います。
それ以前にgrepやsedは簡単な文字抜き出しぐらいにしか使ったことがなかったのですが、
こんなに便利だとは驚きました。学習して次は自分で解決できるようにしたいと思います

454:448
15/03/15 14:55:28.70 .net
これは私見だが
grepの-PはPerlの正規表現として扱うためのオプションだ
Perlを知ってるなら問題ないが、知らないなら>>451のが多分勉強対象としては正しい

455:名無しさん@お腹いっぱい。
15/03/15 15:09:05.03 .net
>>452
投稿した後でレス確認しました。すいません。
こちらのやり方でもできました!ありがとうございました。
書き方の意味を勉強してみたいと思います。
>>454
ありがとうございます。perlも知らないので、
教えていただいたオプションの意味も含めて調べてみようと思います。

456:395
15/03/16 22:22:07.74 iYLKElrbV
>>401
なんとか出来ました!ありがとうございました!

sed -e 's/_[0-9][0-9]_/_%%_/' tree.txt | uniq #sortするとls -Rの構造が崩れる
awk '!a[$0]++' tree.txt #fooとbarが交互になっている行をuniq
uniq tree.txt #空行(改行?)が全部消えてまう
sed -i "/:$/i \n" tree.txt #?わからん しっぽが:の行の前に空行を挿入
sed  "/:$/i \n" tree.txt   #?
sed -e "s/^n//" tree.txt   #なんとかできた。あとは%%を数字に戻すのだけ手打ちでがんばる

457:395
15/03/16 22:22:55.63 iYLKElrbV
>>401
何とか出来ました!ありがとうございました!

sed -e 's/_[0-9][0-9]_/_%%_/' tree.txt | uniq #sortするとls -Rの構造が崩れる
awk '!a[$0]++' tree.txt #fooとbarが交互になっている行をuniq
uniq tree.txt #空行(改行?)が全部消えてまう
sed -i "/:$/i \n" tree.txt #?わからん しっぽが:の行の前に空行を挿入
sed  "/:$/i \n" tree.txt   #?
sed -e "s/^n//" tree.txt   #なんとかできた。あとは%%を数字に戻すのだけ手打ちでがんばる

458:395
15/03/16 22:24:14.07 iYLKElrbV
連投申し訳ない

459:名無しさん@お腹いっぱい。
15/03/25 06:56:05.87 .net
専用コマンド使わずに実用的な強度の暗号復号フィルタとか誰か書ける?

460:名無しさん@お腹いっぱい。
15/03/25 12:51:41.84 .net
>>459
専用コマンドってのは、gpg とか openssl みたいなのを指してるの?
python とか perl とかを使っていいのならライブラリ次第で何とでもなりそうだけど、
それも NG なのかな?

461:名無しさん@お腹いっぱい。
15/03/25 15:07:14.94 .net
rot13でよければ
tr A-Za-z N-ZA-Mn-za-m

462:名無しさん@お腹いっぱい。
15/03/25 18:11:12.12 .net
それはさすがに「実用的な強度」とは言えないのでは……

463:名無しさん@お腹いっぱい。
15/03/27 22:26:36.44 .net
会社でシェルスクリプト(awkやsed)いじる必要があるんですが
何かおすすめの本ないですか?

464:名無しさん@お腹いっぱい。
15/03/28 00:47:40.73 .net
URLリンク(www.goggle.co.jp)

465:名無しさん@お腹いっぱい。
15/03/28 11:31:55.66 .net
後ろからn文字目のみを削除する方法ってある?
1234567890
なら
123456780
12345
なら
1235
になるような。

466:名無しさん@お腹いっぱい。
15/03/28 14:11:41.06 gf0XqcquF
>>465
nawkのsubstrでできない

467:名無しさん@お腹いっぱい。
15/03/28 15:17:24.35 shU+BQtVu
>>465
rev, cut -c, head -c, tail -c などでいけるのでは?
$ echo 12345 | rev | cut -c1,3- | rev
1235
$ echo 1234567890 | rev | cut -c1,3- | rev
123456780

468:名無しさん@お腹いっぱい。
15/03/28 14:36:27.39 .net
sed -e 's/.\(.\{n-1\}\)$/\1/'
後ろから2文字目なら
echo 12345 | sed -e 's/.\(.\{1\}\)$/\1/'
1235

469:名無しさん@お腹いっぱい。
15/03/28 15:15:24.11 .net
>>460
LL言語呼び出すにしても拡張ライブラリの専用コマンドに依存するのはNGじゃない?
nkfでrot13読むのは専用コマンドとは言えない気がするけど>>462だよなあ。
バイナリ法辺りを実装すればとりあえずなんとかなるんだろうか?

470:名無しさん@お腹いっぱい。
15/03/28 15:18:54.26 .net
>>465
rev, cut -c, head -c, tail -c などでいけるのでは?
$ echo 12345 | rev | cut -c1,3- | rev
1235
$ echo 1234567890 | rev | cut -c1,3- | rev
123456780

471:名無しさん@お腹いっぱい。
15/03/29 05:16:26.01 .net
>>465
>後ろからn文字目のみを削除する方法ってある?
a=1234567890; echo "${a%??}${a#?????????}"

472:名無しさん@お腹いっぱい。
15/03/29 08:10:35.43 .net
>>471
それ、n文字目と言うのが $n 変数に入ってる場合のこと聞いてるんでは? 固定数値ならいろいろ方法あるよ。

473:名無しさん@お腹いっぱい。
15/03/29 13:30:23.41 .net
>>472
可変でも同じことはできるけど。
a=1234567890; n=4; f(){ r=$1; while [ ${#r} != $2 ]; do eval r=\${r$3?}; done; echo $r; }; echo $(f $a $((${#a} - $n)) %)$(f $a $(($n - 1)) \#);

474:名無しさん@お腹いっぱい。
15/03/29 13:51:13.01 .net
もっとエレガントな方法がいいなぁ

475:名無しさん@お腹いっぱい。
15/03/29 14:10:10.11 .net
467が他の回答に勝っている点って何があるのかなあ

476:名無しさん@お腹いっぱい。
15/03/29 14:39:04.14 .net
bash + GNU coreutils の cut コマンド限定
範囲チェックはしていない
ncut () {
declare str="$1"
declare -i idx="$2"
declare -i len=$(expr length "$str")
echo $str | cut --complement -b$((len - idx + 1))
}
$ ncut 1234567890 2
123456780
$ ncut 12345 2
ncut 12345 2

477:名無しさん@お腹いっぱい。
15/03/29 14:40:32.78 .net
>>476
おっと、s/delcare/local/ でお願い

478:名無しさん@お腹いっぱい。
15/04/06 20:37:17.61 .net
$ N=1; echo 1234567890 | rev | sed 's/\(.\{'"$((N-1))"'\}\)./\1/' | rev

479:名無しさん@お腹いっぱい。
15/04/06 23:05:32.98 .net
xyzあいうえおabc
xyzかきくけこabc
というファイルがあったときに
あいうえお
かきくけこ
と抜き出す方法にはどうすればよいでしょうか
grepなどを使うとおもったのですがうまくいきません。
よろしければご教示おねがいします

480:名無しさん@お腹いっぱい。
15/04/07 01:08:35.80 .net
ファイル名変更じゃ無くて抜き出しなら
lsのオプション弄ってパイプでsedに繋げばいい
変更ならrename使おう

481:名無しさん@お腹いっぱい。
15/04/07 01:19:37.06 .net
sed 's/xyz\(.*\)abc/\1/g'

482:名無しさん@お腹いっぱい。
15/04/07 23:44:39.59 .net
例えば、
親ディレクトリ
/小ディレクトリA/photo/
/小ディレクトリB/photo/
/小ディレクトリC/photo/
みたいなディレクトリ構造があった時photo3つをpictureに
変更するにはどうすればよいのでしょうか
for文にmv入れ込めばできると思ったのですができませんでした
初歩的な質もう申し訳ありませんがよろしくお願いします。

483:名無しさん@お腹いっぱい。
15/04/07 23:56:55.05 .net
最後にスラッシュつけなきゃできると思うが

484:名無しさん@お腹いっぱい。
15/04/08 00:23:18.58 .net
for i in *; do cd $i; mv photo picture; done
なんとか自己解決しましたそして>>483有難う

485:名無しさん@お腹いっぱい。
15/04/08 00:30:06.79 .net
って違う
for i in *; do cd $i; mv photo picture; cd ..;done
こうだ!!一つしか変わってなかったぜ

486:名無しさん@お腹いっぱい。
15/04/08 05:44:31.48 .net
cdが無駄です。
for i in *; do mv "$i"/photo "$i"/picture; done
ディレクトリ名等にスペースが含まれていてもいいように $i は "$i" としておく。

487:名無しさん@お腹いっぱい。
15/04/09 06:55:16.58 .net
サブシェルとすればいいだけじゃね?

488:名無しさん@お腹いっぱい。
15/04/09 08:37:12.98 .net
サブシェルが無駄です。

489:名無しさん@お腹いっぱい。
15/04/09 19:49:27.51 .net
効率求めてshellなんか使っていない。

490:名無しさん@お腹いっぱい。
15/04/09 22:21:14.40 .net
その返しは馬鹿っぽいと思います

491:名無しさん@お腹いっぱい。
15/04/09 23:52:38.50 .net
>>482
URLリンク(x68000.q-e-d.net)
util-linuxのrenameコマンドの場合
rename -v photo picture */photo
Debian系だと正規表現指定、できるかは不明
URLリンク(wiki.ubuntulinux.jp)
FreeBSDだとsysutils/renameで正規表現指定、できるかは不明
URLリンク(www.freshports.org)

492:名無しさん@お腹いっぱい。
15/04/15 08:31:50.31 .net
$> TIME="2015/04/15 08:25:16"
$> printf ${TIME:5:11}
04/15
$> echo ${TIME:5:11}
04/15 08:25
$> printf "${TIME:5:11}"
04/15 08:25
罠だ、はまった。。。

493:名無しさん@お腹いっぱい。
15/04/15 08:45:36.46 .net
何が罠なの?
シェル変数の展開時には " " でかこんで "${HOGE...}" にするのが基本。

494:名無しさん@お腹いっぱい。
15/04/15 08:48:00.87 .net
最初から、
date '+%m/%d %H:%M'
にした方がいいのでは?

495:名無しさん@お腹いっぱい。
15/04/15 08:48:10.66 .net
>>492
$ printf "${TIME:5:11}"
04/15 08:25
$ printf "%s %s\n" ${TIME:5:11}
04/15 08:25

496:名無しさん@お腹いっぱい。
15/04/15 09:13:38.03 uEYnIocSI
$ TIME="2015/04/15 08:25:16"
$ printf ${TIME:5:11}
04/15
$ /usr/bin/printf ${TIME:5:11}
04/15/usr/bin/printf: warning: ignoring excess arguments, starting with `08:25'
$ type printf
printf is a shell builtin

497:名無しさん@お腹いっぱい。
15/04/15 09:14:12.79 .net
$ TIME="2015/04/15 08:25:16"
$ printf ${TIME:5:11}
04/15
$ /usr/bin/printf ${TIME:5:11}
04/15/usr/bin/printf: warning: ignoring excess arguments, starting with `08:25'
$ type printf
printf is a shell builtin

498:名無しさん@お腹いっぱい。
15/04/15 13:25:09.88 .net
$ TIME="2015/04/15 13:30:16"
$ printf ${TIME:5:11}
04/15
$ IFS="wanada"
$ printf ${TIME:5:11}
04/15 13:30

499:名無しさん@お腹いっぱい。
15/04/15 13:48:45.04 .net
bash依存をやめよう
$ TIME="2015/04/15 08:25:16"
$ printf ${TIME:5:11}
sh: Bad substitution
$ IFS='/ :'
$ set $TIME
$ echo $2/$3 $4:$5
04/15 08:25

500:名無しさん@お腹いっぱい。
15/04/16 23:26:24.70 .net
GNU date
$ TIME="2015/04/15 08:25:16"
$ date '+%m/%d %H:%M' --date="${TIME}"
04/15 08:25

501:名無しさん@お腹いっぱい。
15/04/30 23:24:48.53 .net
今月のsoftware designはgrepsedawk入門で面白かったな

502:名無しさん@お腹いっぱい。
15/05/07 20:52:12.51 .net
シェルスクリプトを最近使うようになりffmpegなどにファイルを投げて一括処理できるようになりました。
でも、エラー処理に困っています。例えば、ffmpegで作ったファイルが壊れているかどうかわからないのです。
ffmpegはファイルとログを出してくれるのでログの特定の文字(たとえば、bad header、skip)が出てきたときに、
その時のログを書き出し、そのログを使って処理を分岐させることは可能なのでしょうか?
このときffmpegは終了コードは0を返してきました。プログラムによっては終了コード1を返してしてくるものもありました。

503:名無しさん@お腹いっぱい。
15/05/07 20:53:06.51 .net
grep君でうまく抽出したら正規表現で検索すればできるのでは?

504:名無しさん@お腹いっぱい。
15/05/07 21:54:28.34 .net
>>502
ffmpegは最後に 2>&1 を付ける
付ければログをgrepとかできる

505:名無しさん@お腹いっぱい。
15/05/08 20:35:13.72 .net
grepをどう使えばいいのですか?

506:名無しさん@お腹いっぱい。
15/05/08 22:13:16.56 .net
manくらい見た?

507:名無しさん@お腹いっぱい。
15/05/08 22:36:52.79 .net
うーんこの
man見てくれよせめて--helpとかググるとかしろよ

508:名無しさん@お腹いっぱい。
15/05/09 12:39:02.61 .net
こんな感じでエラー処理するんだよ
書き込みの内容見てる限りは無理だと思うけど
ffmpeg xxxx > xxxx.log 2>&1
cat xxxx.log | grep "bad header"
if [ $? -ne 0 ]
then
# エラー処理
fi

509:名無しさん@お腹いっぱい。
15/05/09 12:42:06.41 .net
catは無駄だな。

510:名無しさん@お腹いっぱい。
15/05/09 13:01:23.55 .net
if [ も無駄だな

511:名無しさん@お腹いっぱい。
15/05/09 13:11:39.85 .net
>>509
判定が1種類だと思ってるアホ発見

512:名無しさん@お腹いっぱい。
15/05/09 13:25:48.27 .net
>>511
二種類あるとどうなるわけ?w

513:名無しさん@お腹いっぱい。
15/05/09 13:26:22.67 .net
無駄だなw

514:名無しさん@お腹いっぱい。
15/05/09 13:32:28.84 .net
>>511
わかった、こいつ馬鹿だから、catがどう無駄なのかわかってないんだ。
なるほどなー、馬鹿だなーw

515:名無しさん@お腹いっぱい。
15/05/09 15:56:32.15 .net
ffmpeg xxxx > xxxx.log 2>&1
if ! grep "bad header" <xxxx.log
then
# エラー処理
fi

516:名無しさん@お腹いっぱい。
15/05/09 18:51:16.11 .net
if [ -n "$(grep 'bad header' xxxx.log)" ]; then
fi

517:名無しさん@お腹いっぱい。
15/05/09 20:08:36.31 .net
grep -qs "bad header" xxxx.log
case $? in 0) echo "Match";; 1) echo "No match";; *) echo "Error";; esac

518:名無しさん@お腹いっぱい。
15/05/11 21:15:37.13 .net
>>515
これだと判定のたびにログを全部読み直すから無駄無駄

519:名無しさん@お腹いっぱい。
15/05/11 22:56:21.16 .net
>>518
どう直せばいいと思う?

520:名無しさん@お腹いっぱい。
15/05/12 18:27:59.13 .net
bashで
for i in $@
do
command
echo ○○中××番目を処理中です。
done
としたいのですが、○○と××はどうすれば表示できるようになりますか?

521:名無しさん@お腹いっぱい。
15/05/12 19:54:49.92 .net
もう一つ聞きたいことがありました
for i in $@にカレントディレクトリだけじゃなく
そのサブディレクトリのファイルを送るにはどう書けばよいのですか?

522:名無しさん@お腹いっぱい。
15/05/12 19:59:27.57 .net
>>520
count=1
for i in $@
do
echo "$#中${count}番目を処理中です。"
command
count=$(($count + 1))
done

523:名無しさん@お腹いっぱい。
15/05/12 20:00:20.69 .net
コピペから脱却すればその答えはおのずと見つかるであろう

524:名無しさん@お腹いっぱい。
15/05/12 20:18:46.18 .net
わざわざ指摘させる流れですか?もうひとつは残しておいた
in $@ は無駄だな

525:名無しさん@お腹いっぱい。
15/05/13 06:35:40.84 .net
$count の $ は無駄だな。
count=$(($count + 1)) の行自体も無駄とは言わないけどbashなら不要だな。
echo "$#中$(( count++ ))番目を処理中です。"

526:名無しさん@お腹いっぱい。
15/05/13 07:02:23.50 .net
>>525
可読性・保守性が悪いから却下

527:名無しさん@お腹いっぱい。
15/05/13 07:23:59.83 .net
for ((i=1;i<=$#;i++)); do echo "${#}中${i}番目を処理中"; done

528:名無しさん@お腹いっぱい。
15/05/13 07:39:14.30 .net
>>527
それだと肝心の $@ の処理ができないじゃん、本末転倒。

529:名無しさん@お腹いっぱい。
15/05/13 08:39:25.96 .net
$@ をどう処理したいの? 例えばこんな感じ?
for ((i=1;i<=$#;i++)); do eval item=\${$i};echo "${#}中${i}番目($item)を処理中"; done

530:名無しさん@お腹いっぱい。
15/05/13 13:58:41.25 .net
curlでメールチェックできないかと思ったんだけど、どうも参考コードが見当たらないなあ。
もしかしてtelnetのような感じの方法になってスマートには無理なのだろうか?

531:名無しさん@お腹いっぱい。
15/05/13 17:11:23.00 .net
こういうことではなくて?
URLリンク(blog.sarabande.jp)

532:名無しさん@お腹いっぱい。
15/05/13 17:26:02.42 .net
送信と受信の違いがわからない男おことわりw

533:名無しさん@お腹いっぱい。
15/05/13 17:49:35.48 .net
ああなるほど、送信がわかれば受信もできるのがわかるから
調べればいいのにと思ったのに
実装されてるコードそのものが欲しかったのね
キミのレベルに合わせられなくてごめんね

534:名無しさん@お腹いっぱい。
15/05/13 17:52:16.16 .net
マニュアル見れば受信できることなんて一目瞭然だよ

535:名無しさん@お腹いっぱい。
15/05/13 19:45:16.01 .net
カウントありがとうございます
サブディレクトリのほうは無理のでしょうか?

536:名無しさん@お腹いっぱい。
15/05/14 01:27:00.37 .net
>>535
$ hogehoge.sh *     カレントディレクトリのファイルだけ
$ hogehoge.sh $(find)  カレントとサブディレクトリ全部

537:名無しさん@お腹いっぱい。
15/05/14 02:06:32.75 .net
>>534
できないなんて話は最初からどこにもないしなあ。
送信と受信の違いというかプロトコル自体が違うんだから参考になるかどうか。

538:名無しさん@お腹いっぱい。
15/05/14 05:00:09.66 .net
マニュアルにPOP3の記載とかあると思うんだが
脳内で>>531=>>534って妄想でもしたか?

539:名無しさん@お腹いっぱい。
15/05/14 06:30:49.15 .net
>>535
IFS=$'\n'
set -- $( find . -type f )
count=0
for i
もしくは、
IFS=$'\n'
fileList="$( find . -type f )"
fileLength=$( echo "$fileList" | wc -l )
count=0
for i in ${fileList}
ところで、v="$( )" のダブルクォートって無駄かな?

540:名無しさん@お腹いっぱい。
15/05/14 07:13:26.75 .net
v= のように直接代入する場合はダブルクォートは無駄。
それより、findでスペース入りファイル名が見つかった場合とかの対応ができてない。

541:名無しさん@お腹いっぱい。
15/05/14 07:25:46.50 .net
findで苦労してスペース入りファイル名の対処するより、
for f in * */* */*/* */*/*/*
って書いちゃった方が早いんだよな。どうせ階層は何段階か有限だし、
アスタリスクならスペース入りでも無問題。

542:名無しさん@お腹いっぱい。
15/05/14 07:27:50.46 .net
> findでスペース入りファイル名が見つかった場合とかの対応
IFS=$'\n'

543:名無しさん@お腹いっぱい。
15/05/14 07:35:52.80 .net
findで改行入りファイル名が見つかった場合とかの対応ができてない

544:名無しさん@お腹いっぱい。
15/05/14 07:44:29.36 .net
> 改行入りファイル名が
それは
IFS=$'\n'
と書いてある時点で、自明じゃない?
指摘自体が無駄だな

545:名無しさん@お腹いっぱい。
15/05/14 07:46:27.90 .net
自明ならバグを作り込んでもいいのかよw 結局使いものにならない

546:名無しさん@お腹いっぱい。
15/05/14 07:49:42.88 .net
シェルなどのコマンドラインの入力に再利用可能な方法でちゃんとエスケープしてファイル名出力できるようなオプションが
findに欲しいな。(スペースも改行もその他記号もちゃんとクォートして、シェルで評価すると元のファイル名に戻る形式)
(-print0 は xargs 用にしか使えないし)

547:名無しさん@お腹いっぱい。
15/05/14 08:06:46.69 .net
やるならこんな感じかな。
$ find . -print0 | while read -r -d $'\0' f; do echo $f; done
それから bash の組み込み関数 printf にある %q が使えるかも
bash$ help printf
:
%q quote the argument in a way that can be reused as shell input

548:名無しさん@お腹いっぱい。
15/05/14 09:04:56.24 .net
while read -rd ''

549:名無しさん@お腹いっぱい。
15/05/14 09:46:33.11 .net
>>538
なぜそういう話になるのかよくわからんが、記載があるならぐだぐだ言うよりコピペで一発なんじゃないか?

550:名無しさん@お腹いっぱい。
15/05/14 10:26:05.55 .net
誰も相手してないのになぜその質問に触れるかなあ・・・

551:名無しさん@お腹いっぱい。
15/05/14 10:28:14.98 .net
read -rd '' とかはbash依存なんだよなぁ。。
read: 1: Illegal option -d

552:名無しさん@お腹いっぱい。
15/05/14 10:36:47.40 .net
>>550
どの質問の話?

553:名無しさん@お腹いっぱい。
15/05/14 11:21:47.00 .net
コマンド置換とシェル関数の違いがピンとこないのですけど
どう違うのでしょか?

554:名無しさん@お腹いっぱい。
15/05/14 11:31:29.33 .net
記載がある筈 なんてはっきりしない話は要らないんだよなあ。
このスレのネタなんて大抵記載がある筈だから。

555:名無しさん@お腹いっぱい。
15/05/14 12:13:05.97 .net
どう勘違いしたらコマンド置換とシェル関数が同じようなものに思えるんだ??

556:名無しさん@お腹いっぱい。
15/05/14 12:15:56.28 .net
>>553
使う分には
・コマンド置換は再利用ができない
・シェル関数は再利用ができる
の違いがある

557:名無しさん@お腹いっぱい。
15/05/14 12:19:07.87 .net
それこそ置き換えの効かない例でも出せば理解するだろ。

558:名無しさん@お腹いっぱい。
15/05/14 12:21:29.00 .net
ll(){ ls -l;}
ll
ってのがシェル関数。
hoge=`ls`
echo "$hoge"
ってのがコマンド置換。
どこも似てない。

559:名無しさん@お腹いっぱい。
15/05/14 12:25:28.02 .net
どう勘違いしたら言語的文法的に似てるかという話に思えるんだ?

560:名無しさん@お腹いっぱい。
15/05/14 12:45:56.98 .net
むしろ似てると思うのは何か根本的な勘違いが原因

561:名無しさん@お腹いっぱい。
15/05/14 13:19:51.91 .net
コマンド置換をaliasと勘違いしてるとか?

562:名無しさん@お腹いっぱい。
15/05/14 13:27:28.77 .net
>>551
今回はbash限定でいい話しだよ。まあ、無駄じゃあないけど
>>520
> bashで
> bashで
> bashで

563:名無しさん@お腹いっぱい。
15/05/14 14:08:51.71 .net
違いを聞くのは別に似てるからじゃないと思うぞ。
単にとある使い方では等価に思えたってだけだろう。
重箱の隅が知りたいみたいな話だな。

564:名無しさん@お腹いっぱい。
15/05/14 14:28:51.82 .net
どう勘違いしたらコマンド置換とシェル関数が等価に思えるような使い方があるんだ??

565:名無しさん@お腹いっぱい。
15/05/14 14:47:51.26 .net
ageてる人が等価に思えるような話だろう。

566:名無しさん@お腹いっぱい。
15/05/14 18:12:58.96 .net
おっしゃる通り、使い方が同じに見えたので
どんな使い分けをしたらいいのだろうと思っていました

567:名無しさん@お腹いっぱい。
15/05/14 19:43:10.96 .net
>>563
いや、その気持ちが分かるなら答えてやれよ。
さっぱり分からん人間には答えようがないんだから。

568:名無しさん@お腹いっぱい。
15/05/14 20:08:14.55 .net
使い分けとか考えなくていいんじゃないの?
期待通りの動作をしない場合がないのかだけ考えれば。

569:名無しさん@お腹いっぱい。
15/05/14 20:38:06.69 .net
>>567
わからなきゃ聞くしかなかろ。
気持ちの想像すらできなければ回答役なんて荷が重いから
黙って見守るべきだと思う。

570:名無しさん@お腹いっぱい。
15/05/14 20:54:02.91 .net
>>569
は?だからお前が適任だろ?って話をしてるんだが?
さてはお前どえらい馬鹿だな?

571:名無しさん@お腹いっぱい。
15/05/14 21:13:48.75 .net
聞こうとしている時にそんな暴言を言うから
気持ちの想像すらできないなんて言われるんですよ。

572:名無しさん@お腹いっぱい。
15/05/14 21:20:34.11 .net
>>571
なんか壮大な勘違いをしてるようだから言っとくけど
お前かなり性格悪そうに見えてるぞ

573:名無しさん@お腹いっぱい。
15/05/14 21:25:29.94 .net
>>568以外になにか言う事でもあるの?

574:名無しさん@お腹いっぱい。
15/05/15 06:21:18.71 .net
echo $(a=A;echo $a)
echo $a
b () {a=A;echo $a;}
b
echo $a
unset a
(a=A)
echo $a
a=A
echo $a
unset a
# 以下zsh。
() {typeset a=A;}
echo $a
() {a=A;}
echo $a

575:名無しさん@お腹いっぱい。
15/05/15 07:08:32.05 .net
色々言ってたけど結局メールチェックは誰も試してないの?

576:名無しさん@お腹いっぱい。
15/05/15 08:03:24.42 .net
curlでやってるよ
IMAPもPOP3も普通に使える

577:名無しさん@お腹いっぱい。
15/05/15 08:50:33.60 .net
./test.sh: 行 5: 予期しないトークン `{a=A' 周辺に構文エラーがあります
b () (a=A;echo $a)

578:名無しさん@お腹いっぱい。
15/05/15 11:06:13.53 .net
ここ見てると昔書いたスクリプトについて
あのコマンドはああするべきだったとか思うことはあるけど
曲がりなりにも期待した動作はしてたから問題ないと思い直した

579:名無しさん@お腹いっぱい。
15/05/15 13:23:55.72 .net
>>577
そう。そこに違いがある事が言いたかった。

580:隼人新聞社
15/05/15 17:26:05.10 .net
★サヨクを応援して1票入れた人は強く反省してください
★民主 枝 野 は殺人を平気で行う極左テロ暴力団と親密交際があった!!!親密交際!テロの手先!北朝鮮の手先(安倍総理の談話)
★   菅 直 人 は朝鮮人と親密交際、献金があった!!朝鮮韓国の傀儡手先(TVで報道!)
★民主は日教組の巣窟。極めて危険な団体、危険な政権だった!北朝鮮を熱烈に支援するのが日教組(信頼できる情報スジの話)!!北朝鮮の手先!
民主の基本姿勢は死刑廃止!!だから自民の安倍総理を支援してください!
サヨクと公明創価を応援するは地獄行き
サヨクを応援して1票入れた人は反省してください

581:名無しさん@お腹いっぱい。
15/05/16 18:18:52.70 .net
キー入力を受け付けを待って止まっているコマンドを
何らかの方法で次のコマンドに行かせる方法はありますか?

582:名無しさん@お腹いっぱい。
15/05/16 18:38:27.01 .net
zshだとzpty
tclだとexpect
ただ単純な事なら
command<<EOF
y
y
n
EOF
とかこんなんで処理できるよ。

583:名無しさん@お腹いっぱい。
15/05/16 18:41:48.45 .net
マウスつかってどうのこうのの話なら、xdotoolとかいうのが使えそう。
plamolinuxのこじま氏の2015/1/8の日記に少し使い方が書いてある。

584:名無しさん@お腹いっぱい。
15/05/17 09:38:15.41 .net
>>582, >>583
ありがとう
早速、調べてみます
今までできないものと思って諦めていたから感動

585:名無しさん@お腹いっぱい。
15/05/17 18:06:01.98 .net
freebsdのスレッドの人なのかなと思ったので以下でできたよ。詳しい事は知らない。
最近はbashのほうが強力なのかもしれないし、おそらく似た機能はあると思う。
ただexpectが定番だと思う。ただ構文はtclだけど、
たぶん他のshellを使うのって嫌な部分があるだろうし。
# まず以下のpasswordの部分を書いて、試して、感じる。
expect -c '
spawn su
expect Password:
send "your password\r"
interact
'
# passwordとpromptの指定の部分を書換える必要があると思う。
expect -c '
spawn su ;# expectで制御できるようにsuを起動する。
expect Password: ;# promptにPassword:が来るまで待機。
send "your password\r" ;# 来たら引数で指定されたpasswordを入力する。
expect -re {(%|#|\\$) $} ;# Password:が来るまで待機になってたものを、
;# promptの入力受け付け画面に変える。
;# -reは正規表現。ここはmanpageそのまま写しました。
;# 各々によって変える必要があるでしょう。
send "whoami\r"
send "exit\r"
expect eof
'

586:名無しさん@お腹いっぱい。
15/05/19 17:38:24.79 .net
forやwhileとかの中でコマンドを実行するとき
そのコマンドをforやwhileに直接書いて実行させるか
変数扱いさせてのforやwhile上にコマンドを書いて実行させるか
関数として定義してやってforやwhileの中で実行させてやるか
どれが効率的で高速に実行することができるようになるんだろう?
コマンドの呼び出しや実行や終了の重複を考えるとどうなんだろう?
シェルスクリプトを自分で書けるようになってきて、こんな疑問を持つようになりました
皆さんの意見を聞かせて下さい

587:名無しさん@お腹いっぱい。
15/05/19 17:45:28.31 .net
高速っていうなら直接コマンド記述が高速。
for/whileループであっても、ループ内をキャッシュしたりせず、
毎回コマンド行とか変数とか関数を評価し直しながら実行してる。
しかしシェルスクリプトに高速性なんて求めてはいけない。

588:名無しさん@お腹いっぱい。
15/05/19 20:08:13.54 .net
そもそも高速化ってそういう事じゃないしな。
何回そのプログラムを実行すれば、そんな間違った高速化の為に費した時間を取り戻せると思う?

589:名無しさん@お腹いっぱい。
15/05/19 21:29:44.56 .net
高速化したいならプログラム書くしかない
プロセスを起動するコストは莫大だから

590:名無しさん@お腹いっぱい。
15/05/19 21:54:05.59 .net
iniファイルを読み書きして、ファイル名をキーにしてすでに処理済みのファイルかどうかを条件判定、
みたいなことをbusyboxに内包された汎用コマンドだけでやるには、どうしたらいい?
決められたディレクトリの中に、リサイズしたいjpg画像群があって、
処理済みかどうかを条件分岐したかったんだけど、時間が無くて別のツールで
間に合わせてしまった。再びやりたくて調べてみたけど、実装事例を見つけられず。

591:名無しさん@お腹いっぱい。
15/05/19 22:48:04.62 .net
busyboxでやりたいならそちらでどうぞ
ちなみにシェルスクリプトでやるならlsでリスト作って
ループしながら処理すればいいと思う
処理済はどこかのファイルにファイル名を書き出して
ループでの処理前にその中にファイルがあるかどうかgrepなどで見て
無ければ処理すればいい
あとなんとなく579=583臭がするけど気のせいか

592:名無しさん@お腹いっぱい。
15/05/19 22:58:05.98 .net
ありがと。大きなヒントをもらえたので、作ってみる。
ちなみに同一人物じゃないよ。

593:名無しさん@お腹いっぱい。
15/05/20 11:34:26.93 .net
>>588, >>589
ドツボにはまりかけてました

>>591
妄想、乙

594:名無しさん@お腹いっぱい。
15/05/20 13:31:28.02 .net
なんだコイツ

595:名無しさん@お腹いっぱい。
15/05/20 17:55:29.75 .net
よう、ネット番長

596:名無しさん@お腹いっぱい。
15/05/20 18:12:52.71 .net
こんな>>586
何言いたいか曖昧な事にまともに答えてくれた人に感謝する事だね。
私は何も答えなかったよ。それこそ妄想、乙と感じたしね。

597:名無しさん@お腹いっぱい。
15/05/20 18:24:21.97 .net
× 答えなかった
○ 答えられなかった(コミュ能力不足)

598:名無しさん@お腹いっぱい。
15/05/20 18:27:39.23 .net
まぁある意味答えられなかったとは言えるな。
認めよう。

599:名無しさん@お腹いっぱい。
15/05/20 18:33:19.73 .net
少なくとも、ほかの人はある程度の要求仕様をくみ取るところまでは出来たわけだから、
コミュ能力であることは明白。キミさー、これじゃ仕事できないよ。

600:名無しさん@お腹いっぱい。
15/05/20 18:38:02.12 .net
そうだねバファリンの半分が優しさでできているのだとしたら、
彼等は九割方優しさで出来てるといえるね。

601:名無しさん@お腹いっぱい。
15/05/20 19:11:05.53 .net
追っ払っといた。以降スルーで。
あいつはおたくらが汚いレスする値打ちも無い。だからこそ俺の様な男がいるのさ。

602:名無しさん@お腹いっぱい。
15/05/21 06:15:13.14 .net
-gt の利点について教えてください。
[ HOGE -gt 123 ]
は、
((HOGE > 123))
とも記述できますよね? なら -gt の必要性はあるのでしょうか?

603:名無しさん@お腹いっぱい。
15/05/21 10:47:36.25 .net
>>576
一体どういう書式のどんな結果をどうやって受け取っているのか、参考までに見せて欲しい。

604:名無しさん@お腹いっぱい。
15/05/21 13:10:57.30 .net
>>602
前者はbourne shellから使える一般的な方法
後者は一部のシェルの拡張機能で、使えない場合がある。
使えるならどっちでもいい。上で出てたbusyboxのshだと使えないんじゃないかな多分

605:名無しさん@お腹いっぱい。
15/05/21 15:22:40.17 .net
>>602
数値比較だから16進や8進表現が使える

606:名無しさん@お腹いっぱい。
15/05/21 16:10:57.08 .net
>>605
-gt の利点として??

607:名無しさん@お腹いっぱい。
15/05/21 16:34:31.27 .net
利点欠点というより
数値比較と文字列比較で機能が異なるので
比べるものじゃない

608:名無しさん@お腹いっぱい。
15/05/21 17:02:11.38 .net
[ -gt ] も (( > )) も、数値としての比較だが、、

609:名無しさん@お腹いっぱい。
15/05/21 17:12:42.96 .net
ごめ、誤解してたわ

610:名無しさん@お腹いっぱい。
15/05/21 22:58:30.82 .net
>>603
いくら?

611:名無しさん@お腹いっぱい。
15/05/22 10:22:56.55 .net
まず自分なりに作ったサンプル出してからうまくいかないと相談すればいいのに
はなから見せろとか無いわ~

612:名無しさん@お腹いっぱい。
15/05/22 11:00:25.39 .net
#/bin/sh
curl
ほい

613:名無しさん@お腹いっぱい。
15/05/22 11:11:39.20 .net
すみませんが詳しい方のみ回答をお願いします

614:名無しさん@お腹いっぱい。
15/05/22 11:19:33.89 .net
>>612
ドキュメント読んで出直してこい

615:名無しさん@お腹いっぱい。
15/05/22 11:36:29.05 .net
やだね
(echo USER hoge; echo PASS pass; echo STAT) | nc server 110

616:名無しさん@お腹いっぱい。
15/05/22 11:38:38.49 .net
>>612
そこまでして欲しいのかwww
頭が無いなら金を払えよ

617:名無しさん@お腹いっぱい。
15/05/22 11:41:25.48 .net
>>616
>>613

618:名無しさん@お腹いっぱい。
15/05/22 11:52:29.57 .net
DOC嫁なんて言う奴に限って自分は読んでいないのもよくある話。

619:名無しさん@お腹いっぱい。
15/05/22 12:14:11.32 .net
読むのは質問者で回答者じゃない

620:名無しさん@お腹いっぱい。
15/05/22 12:15:28.97 .net
>>619
>>613

621:名無しさん@お腹いっぱい。
15/05/23 00:45:24.32 .net
>>613
そら違うだろ
回答してくれる気のある方のみレスしてくださいだろ

622:名無しさん@お腹いっぱい。
15/05/23 07:23:22.41 .net
コピペ荒らしにマジレスしてもねぇ

623:名無しさん@お腹いっぱい。
15/05/23 07:57:47.77 .net
利点とかより互換性だけじゃね?

624:名無しさん@お腹いっぱい。
15/05/23 09:04:23.16 .net
>>621
自分では回答しているつもりになっている半可通が居るからじゃないの?
>>532とかは回答なんだろうけど、回答者からは質問者だと錯覚されるから回答がこなくなる。

625:名無しさん@お腹いっぱい。
15/05/23 09:53:03.52 .net
100レス近く前の書き込みを引っ張る質問者も
相当な意気込みで実装したいらしいな
いじってやるからまた書き込みなよ

626:名無しさん@お腹いっぱい。
15/05/23 11:20:44.87 .net
ほら居るし。

627:名無しさん@お腹いっぱい。
15/05/23 11:26:14.78 .net
これだけの時間があればCででも実装できたろうにw

628:名無しさん@お腹いっぱい。
15/05/23 11:31:28.73 .net
教えてやるから結果を見せろというべきだな。
それが正当な対価だろう。

629:名無しさん@お腹いっぱい。
15/05/23 12:58:15.22 .net
他人の結果に興味はないだろ普通。
「できましたー!!」←これが対価なの?
馬鹿にしてるの?

630:名無しさん@お腹いっぱい。
15/05/23 14:47:50.85 .net
興味がないのに口出す訳ないだろう。

631:名無しさん@お腹いっぱい。
15/05/23 14:55:03.12 .net
>>613ですが、ロム容量が極小の組み込み機器に入れる予定で、
シェルスクリプトじゃないとダメです。
繰り返しますがわかる方のみ回答してください。
わからない方は技術力がないと同一ですので(認めたくないでしょうけど)、
素直に黙るのが賢明です。

632:名無しさん@お腹いっぱい。
15/05/23 15:29:15.99 .net
>>631
極小ならアセンブラだろ

633:名無しさん@お腹いっぱい。
15/05/23 15:32:43.77 .net
偽者の>>631は消えろ
まあこれぶっちゃけ200万レベルの仕事だね

634:名無しさん@お腹いっぱい。
15/05/23 15:50:06.27 .net
アセンブラでも構いません。ARMでお願いします。
繰り返しますがわかる方のみ回答してください。

635:名無しさん@お腹いっぱい。
15/05/23 15:58:55.20 .net
>>633
シェルスクリプトで暗号通貨のウォレットでも作れば?

636:名無しさん@お腹いっぱい。
15/05/23 16:04:25.94 .net
それはもうできています。
すみませんが質問にだけ回答してください。

637:名無しさん@お腹いっぱい。
15/05/23 16:39:09.77 .net
できてるならみせてよ

638:名無しさん@お腹いっぱい。
15/05/23 16:52:36.76 .net
繰り返しますがわかる方のみ、質問にだけ回答してください。

639:名無しさん@お腹いっぱい。
15/05/23 17:05:15.19 .net
>>638
回答者以外はご遠慮下さい。

640:名無しさん@お腹いっぱい。
15/05/23 17:07:20.51 .net
こっちは仕事でやってるんです。
趣味で遊んでるアナタ方とは違うんです。

641:名無しさん@お腹いっぱい。
15/05/23 17:09:47.01 .net
そういうネタをやられては困ります。

642:名無しさん@お腹いっぱい。
15/05/23 17:43:32.85 .net
仕事でやってるのにまさかただとは...

643:名無しさん@お腹いっぱい。
15/05/23 17:56:45.03 .net
仕事とかいうネタはやめましょうねボク。

644:名無しさん@お腹いっぱい。
15/05/23 18:22:50.65 .net
仕事=質量×距離

645:名無しさん@お腹いっぱい。
15/05/23 18:27:23.08 .net
>>644
仕事=力×距離
ネタぐらい正しく書こうね

646:名無しさん@お腹いっぱい。
15/05/23 18:57:31.97 .net
>>645
仕事=速度&#178;×質量
だろ

647:名無しさん@お腹いっぱい。
15/05/23 19:02:04.07 .net
電子工学系の者にとっては
仕事=電圧×電流×時間

648:名無しさん@お腹いっぱい。
15/05/24 08:36:07.43 .net
仕事=電界×磁界×断面積×時間

649:名無しさん@お腹いっぱい。
15/05/24 09:10:55.86 .net
金=仕事x時間

650:名無しさん@お腹いっぱい。
15/05/24 09:16:37.72 .net
∂金/∂t = ∇×仕事

651:名無しさん@お腹いっぱい。
15/05/24 09:43:16.72 .net
∇・金=0 (金は湧いてこない)

652:名無しさん@お腹いっぱい。
15/05/24 11:40:16.08 .net
>>644-652
もういいんじゃない?

653:名無しさん@お腹いっぱい。
15/05/24 11:47:41.07 .net
仕事×2ch=解雇

654:名無しさん@お腹いっぱい。
15/05/24 13:06:10.39 .net
シェルスクリプトで計算式記述してみてよ

655:名無しさん@お腹いっぱい。
15/05/24 13:18:01.71 .net
物理量の仕事じゃなくて、こっちは本当の仕事でやってるんです。
趣味で遊んでるアナタ方とは違うんです。

656:名無しさん@お腹いっぱい。
15/05/24 13:29:57.13 .net
まあどうみても>>631は趣味だけどな。

657:名無しさん@お腹いっぱい。
15/05/24 18:19:02.96 .net
まちがって、
cd //
ってやったら、エラーにならずに、pwdが//になったw
どこにいたんだ?ww

658:名無しさん@お腹いっぱい。
15/05/24 18:24:05.92 .net
ネットワークのトップか
そんなとこにも移動できるのか

659:名無しさん@お腹いっぱい。
15/05/24 18:58:32.27 .net
>>657
bashの仕様です。今ごろ気が付いたの?

660:名無しさん@お腹いっぱい。
15/05/24 21:43:39.35 .net
知らなかった

661:名無しさん@お腹いっぱい。
15/05/25 12:23:11.70 .net
> bashの仕様す。
というよりは、POSIX かな
URLリンク(pubs.opengroup.org)
3.267 Pathname
Multiple successive <slash> characters are considered to be the same as one <slash>,
except for the case of exactly two leading <slash> characters.
4.12 Pathname Resolution
If a pathname begins with two successive <slash> characters, the first component following
the leading <slash> characters may be interpreted in an implementation-defined manner,
although more than two leading <slash> characters shall be treated as a single <slash>
character.

662:名無しさん@お腹いっぱい。
15/05/25 12:36:39.43 .net
英語よめんけどなんか違う

663:名無しさん@お腹いっぱい。
15/05/25 14:37:48.45 .net
知識無いのに 「bashの仕様です。今ごろ気が付いたの?」 とか恥ずかしくないのだろうか

664:名無しさん@お腹いっぱい。
15/05/25 16:59:21.87 .net
script書いたらすぐ行き当たる問題だし、
pwdで//が二つ出るのはbashやdashの仕様だよ。
zsh rc tclsh tcshどれも/だよ。

665:名無しさん@お腹いっぱい。
15/05/25 19:39:52.69 .net
>>663の人生に暗黒の1ページが加えられた瞬間に立ちあえたことに感謝w

666:名無しさん@お腹いっぱい。
15/05/25 20:31:48.30 .net
ご質問です。
コマンドライン引数の数字を順番に四則演算するシェルプログラミングを
作りたいのですが、うまくいきません。
演算の順番は+(加算)-(減算)*(乗算)/(除算)です。
#!/bin/sh
total=0
a=("$@")
n=${#a[@]}
n=$((n - 1))
while [ $n -ge 0];
do
total=$((a[$n] + $total))
n=$((n-1))
done
echo "total = $total"
自分でできたのはコマンド引数を加算のみ繰り返す処理です。
もしよい解決方法がおありでしたらご教授お願いします。

667:名無しさん@お腹いっぱい。
15/05/25 21:12:27.93 .net
学校の宿題か?だったら自分でやれ

668:659
15/05/25 21:36:30.45 .net
シェルプログラミングの教本で学び始めた、IT土方目指してるニートです。
教本に応えが載ってなくて、序盤のページで行き詰ってしまいました。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch