シェルスクリプト総合 ..
[2ch|▼Menu]
357:login:Penguin
09/08/26 18:54:19 LXSFF2c5
s#URLリンク(##)
とか区切り文字を変える。
$OUT=
の$は不要。

358:login:Penguin
09/08/26 18:54:58 CSCAGJKR
とりあえず$OUTはOUTのtypoだよな
あとはsedのマニュアルでも読んどけ

359:login:Penguin
09/08/26 18:59:39 z6vBIwzM
>>356
どうダメなのか具体的に書いてくれないと。
とりあえず sed 's/URLリンク()' はダメ。
区切りに使う文字(ここでは / )はエスケープしないと。

あるいは、違う文字(例えば @)で代用する。
$ echo 'URLリンク(www.example.com)' | sed 's@^URLリンク(@@)'
www.example.com/

360:login:Penguin
09/08/26 19:00:34 z6vBIwzM
また重複してしまった。吊ってくる。
λ..

361:login:Penguin
09/08/26 19:01:21 whFI2cwY
>>357-358
ありがとうございます.うまくいきました.$OUTはミスです.ありがとうございました.

362:login:Penguin
09/08/26 19:03:00 whFI2cwY
>>359
ありがとうございます.区切り文字を変えてうまくいきました.

363:login:Penguin
09/08/26 19:03:13 CSCAGJKR
やったね!

364:login:Penguin
09/08/26 22:21:29 AG79amBH
UTF-8 BOM が付いててもshスクリプトが動くシェルってある?

365:login:Penguin
09/08/26 22:34:36 aJjlwaDy
スレ違い。

366:login:Penguin
09/08/26 23:27:14 LXSFF2c5
>>364
別にスレ違いじゃないんじゃね?

カーネルで、ファイルの先頭2バイトが'#!'の場合をスクリプトと
しているのでBOMついてたら実行できない。

sourceしたときって意味なら…試したこと無いからわからん。

367:login:Penguin
09/08/27 00:13:17 99inMd3q
>>365
分からないことは全部スレ違いーw

368:login:Penguin
09/08/27 00:14:49 99inMd3q
>>366
シェルスクリプトってexecvできるってことか。てっきりsystemで動かしてると思ってた。

369:login:Penguin
09/08/27 13:09:03 1TOKv6MA
ファイルを読み込んで最後の5行だけ表示したいんだけど
最後の5行ってのをどうすれば計算できますか?
とりあえず
#!/bin/bash
while read LINE; do
echo $LINE
done < "test.file"
ってので行けると思うんですが、行数カウントとかどうすればいいでしょうか?

370:login:Penguin
09/08/27 13:27:38 bqfxDAXQ
tail

371:login:Penguin
09/08/27 15:06:58 g/ERTIS/
>>369
一番簡単なのは、tailコマンドに丸投げすること。

初心者だが、シェルスクリプトで書いてみた。
queueを使おうと考えたが、配列の添え字が循環するデータ構造にしてみた。
うまく動きましたよ。

372:369
09/08/27 15:59:46 1TOKv6MA
#!/bin/bash
dat=`tail -n 5 $logdat`
SAVE_IFS=$IFS
IFS='
'
CNT=0
for BUF in $(cat $logdat)
do
CNT=$(expr $CNT + 1)
done
IFS=$SAVE_IFS

こうしてみたら
cat : **************************** : そのようなファイルやディレクトリはありません
とか出るんだけど何故ここで「cat」とか「そのような〜」とか出るのかわからん。
書き方間違ってますか?

373:login:Penguin
09/08/27 16:07:37 GGkjBXca
よく見てみろ。7行目にcatがあるぞ

374:372
09/08/27 17:02:32 1TOKv6MA
うげっ!
めちゃめちゃ初歩的ミスやらかしてる

修正してうまく動くようになったです。
恥ずかし・・・

375:364
09/08/29 04:48:03 oAtS9pnj
レス遅れましたが、ありがとうございます>>366
bash等ではなくてカーネルに依るとは分かりませんでした。
winだとBOM付ける方がスタンダードっぽい
のでどうにかなるか、考えたもので。

376:login:Penguin
09/08/29 09:39:58 l0gsahaz
>>375
>winだとBOM付ける方がスタンダードっぽい

SJISだろSJIS。

377:login:Penguin
09/08/29 10:52:08 VmNW8gRO
URLリンク(www.youtube.com)
これは新しい

378:login:Penguin
09/08/29 10:56:18 l0gsahaz
while [ 1 == 1 ]

がキモイ。trueでええやん。

379:login:Penguin
09/08/29 10:59:15 Tfl9hfvi
while :

380:login:Penguin
09/09/10 22:53:09 io9H5fc4
grepは検索に一件もひっかからなかったら、何も返してきませんよね
if [grep ほげほげ !=  ""]
とnullと比較したいのですが、実行すると文句を言ってきます
grep -c ほげほげ = 0とすることもできますが、勉強のために書いているので
それはさけたいです
初歩的な事ですいません、ぜひエロい方に教えてもらいたい

381:login:Penguin
09/09/10 23:27:42 kkfd/kxq
>>380
くだ質の人?マルチポスト乙。
とりあえず、もっと基本的な事を勉強した方がいいと思うよ。

grep .......
if [ $? ]; then
  echo "マッチ成功"
else
  echo "マッチ失敗"
fi

382:login:Penguin
09/09/10 23:35:17 kkfd/kxq
>>380
あー、すまなかった。

>実行すると文句を言ってきます

どう文句言われるのかを書かないとね。
たぶん、[grep ほげほげ !=  ""] を [ grep ほげほげ !=  "" ] にすればうまく動くと思う。

'[' と ']' との間にはスペースを入れることに注意。
実は [ ] はコマンドだから、スペースを入れないと式が引数として扱われない。

こう説明すれば理解できるだろうか。
以下の(1), (2)は等価である。

(1) if test -f /etc/passwd; then 文; fi
(2) if [ -f /etc/passwd ]; then 文; fi

383:login:Penguin
09/09/10 23:41:36 kkfd/kxq
コマンドじゃねーや。間違い。

ところで全角スペースがあるのが気になるのだが、そこは大丈夫なのか?

384:login:Penguin
09/09/11 00:14:43 r5Zq4SIa
>>382
> 実は [ ] はコマンドだから、
[ がコマンド。(bash の内部コマンド)

> こう説明すれば理解できるだろうか。
かえって混乱するんじゃね。

385:login:Penguin
09/09/11 00:53:31 tUDxxMlL
[ は内部コマンドではない

386:login:Penguin
09/09/11 00:55:26 sW2bvbaU
>>385
help [

387:login:Penguin
09/09/11 01:18:00 1ovlFoMD
cshです。

a.cshの実行中にb.cshを実行したいです。
で、a.cshで宣言した変数をb.cshでも引き継ぎたいのです。
さらに、b.cshに引数を渡して実行したいのです。

a.cshの実行中に
csh b.csh だと引数をつけて実行できますが、変数が引き継がれないようです。
source b.cshだと変数は引き継がれますが、引数をつけて実行できません。

どうしたらいいのん。

388:login:Penguin
09/09/11 05:26:58 bKplMqH/
/usr/bin/[の方も、昔は/usr/bin/testへのハードリンクだったが
今は違うんだな。やっぱり日々勉強しないと…

389:login:Penguin
09/09/11 07:46:22 r5Zq4SIa
>>385
type [

390:login:Penguin
09/09/11 08:15:42 9DDccZ59
>>387
>source b.cshだと変数は引き継がれますが、引数をつけて実行できません。
引数をつけて実行できるんじゃない?
::::::::::::::
a.csh
::::::::::::::
#!/bin/csh -f
set val="hello"
echo "a.csh:$* $val"
source b.csh 1 2 3
echo "a.csh:$* $val"
::::::::::::::
b.csh
::::::::::::::
#!/bin/csh -f
echo "b.csh:$* $val"

% ./a.csh
a.csh: hello
b.csh:1 2 3 hello
a.csh: hello

391:login:Penguin
09/09/14 22:11:59 VDeHYP1G
#!/bin/bash
trap "logoutfunc_ctrl; logout" 1 2 3 15

最初の2行にこう記述してるんですが、logoutせずにプロンプト画面に戻る方法がありますか?
bashにこのシェルを書いているのでログイン後は必ずこのシェルが立ち上がるようになってます。
このシェルを実行するのは特定のユーザーのみで、他にこのシェルがあるサーバーにログインは出来ません。
(他のユーザーはrootを除いて全てログイン出来ないようにしてます)
プロンプト画面には触らせないようにしたいのですが、これでプロンプトに抜けれるという人がいるので
どういった方法があるのか教えていただけないでしょうか。


392:login:Penguin
09/09/14 22:59:21 SeJGwizk
なんかよくわからんけど
ログインシェルを変えちゃったら。

393:login:Penguin
09/09/14 23:18:36 DAW4cbiO
trapでlogoutしてるのにそんなこと出来るの?
おれも悪さされないようにtrapでlogoutしてるからもしそういう抜け道あるなら対策したいな。

394:login:Penguin
09/09/15 23:31:19 XlHfxREn
>>391
Ctrl+Z?

395:login:Penguin
09/09/16 01:29:49 N6PYBStw
SIGTSTPもそうだけど、普通にbash起動できたりしないの?

396:login:Penguin
09/09/17 16:40:19 y7kbSG6/
現在、/ 配下に次のディレクトリがある(CentOS 5.3)。

bin boot dev etc home lib lost+found media miscmnt net opt proc root sbin selinux srv sys tmp usr var

で、例えばの話なんだけど、/var以下と/etc以下のファイルで72時間以内に更新されたファイルだけを検索するために、
/var以下と/etc以下だけを検索するんじゃなくて、/varと/etcの両ディレクトリ以外を検索対象から除外した上で
/ を検索する、という手法をとる場合、次のようなワンライナーが考えられる(改行してるけど実際は一行)。

find / \( -path '/bin/*' -o -path '/boot/*' -o -path '/dev/*' -o -path '/home/*' -o -path '/lib/*'
-o -path '/lost+found/*' -o -path '/media/*' -o -path '/misc/*' -o -path '/mnt/*' -o -path '/net/*'
-o -path '/opt/*' -o -path '/proc/*' -o -path '/root/*' -o -path '/sbin/*' -o -path '/selinux/*'
-o -path '/srv/*' -o -path '/sys/*' -o -path '/tmp/*' -o -path '/usr/*' \) -prune -o
-type f -mtime -3 -print

で、これを

find / $OPT -type f -mtime -3 -print

と書くために、

OPT=\( -path '/bin/*' -o -path '/boot/*' -o -path '/dev/*' -o -path '/home/*' -o -path '/lib/*'
-o -path '/lost+found/*' -o -path '/media/*' -o -path '/misc/*' -o -path '/mnt/*' -o -path '/net/*'
-o -path '/opt/*' -o -path '/proc/*' -o -path '/root/*' -o -path '/sbin/*' -o -path '/selinux/*'
-o -path '/srv/*' -o -path '/sys/*' -o -path '/tmp/*' -o -path '/usr/*' \) -prune -o

とシェル変数を定義する(改行してるけど実際は一行)。で、次を実行するとエラーとなる。

# find / $OPT -type f -mtime -3 -print
find: パスは評価式の前におかなければならない
Usage: find [-H] [-L] [-P] [path...] [expression]

これ、エラーになる原因と対策方法分かる人いたら誰か教えて。

397:login:Penguin
09/09/17 16:45:22 HEpWOKWA
ここでも読んどけ

業務でラクするためのUNIXテクニック集
URLリンク(codezine.jp)

398:login:Penguin
09/09/17 16:53:55 zpBnmmE6
>>396
とりあえずecho $OPTして良く考える。

でも目的からいって find /etc /var ... でいいと思うんだがなんでそんなめんどくさいことするの?

399:login:Penguin
09/09/17 16:57:51 ih+TQz/f
次のようなワンライナーが考えられる、って書いてあるし
宿題じゃないの

400:login:Penguin
09/09/21 16:40:00 nYMA5TsQ
>>396の方法の是非は置いといて、
一気に難しい事やろうとしてダメな場合にそのままデバッグしようとする姿勢からして間違ってるのね
最も確実にできる単純な所からOKなのを確認しつつ、少しずつ複雑化していけばいいのにね
単純化もせずにここにポストしちゃうのもダメなのね

401:login:Penguin
09/09/22 01:02:32 CsobNaX3
>>396
> エラーになる原因

> OPT=略 -prune -o
-prune と -o は、OPT= って式の右辺とは認識されていない。

402:login:Penguin
09/09/22 21:32:32 tUDMNFi9
WinでSJISだろSJISって言った人は誰ですか
無知はレスしなくていいと思うぞ

403:login:Penguin
09/09/24 23:42:28 SAfgo/2/
shでプロセス置換をすることはできますか?

404:login:Penguin
09/09/25 07:39:03 DPMjFFBq
exec ?

405:login:Penguin
09/09/25 08:28:22 Kq0dBVoG
bashの<(hoge)のようなやつです

406:login:Penguin
09/09/25 09:10:47 fabAV8W5
普通のshにはないんじゃないかな。実はshという名前でも実体はbashという
こともよくあるが。ないときはmkfifo使えばなんとかなりそう。

407:login:Penguin
09/09/25 09:28:37 Kq0dBVoG
>>406
mkfifoを使ってみます。
ありがとうございます。

408:login:Penguin
09/09/25 09:49:07 7/BCzuXv
>>403
sh って、どの sh?

409:login:Penguin
09/09/25 19:55:47 Kq0dBVoG
>>408
shって何種類もあるんですか?

410:login:Penguin
09/09/26 16:08:50 Jy0DLp0d
>>409
約2000種類くらいある。

411:login:Penguin
09/09/26 16:27:53 XBVVzvrd
一行目の
#!/bin/sh
みたいな表記ってなんていうんだけ?

412:login:Penguin
09/09/26 16:29:13 Jy0DLp0d
>>411
マジックナンバー

413:login:Penguin
09/09/26 16:58:06 v336ZdvP
ホラ吹きはやめなはれ

414:login:Penguin
09/09/26 17:36:19 pX1JKn/Q
shebang

415:login:Penguin
09/09/27 18:09:06 251MLAqQ
あるフォルダの中のフォルダのうち中身が空のフォルダをまとめて削除するにはどうすればいいですかね?

416:login:Penguin
09/09/27 18:14:24 Co+mxy4N
find あるフォルダ -type d -empty かな

417:login:Penguin
09/09/27 18:17:18 bShqvf/m
find . -type d -exec rmdir --ignore-fail-on-nonemytp -p {} \;

418:login:Penguin
09/09/27 18:36:06 251MLAqQ
>>417
rmdir: failed to remove `.': 無効な引数です
とのことでした。。

>>416
rm -r `find . -type d -empty`としたら期待通りの動作をしてくれました!

有難うございました。

419:login:Penguin
09/09/27 18:44:30 ZlHSYQ4N
何も言うまい

420:login:Penguin
09/09/27 21:31:53 qHK4F1Gh
ストリームから特定のバイト数分だけ読み出すことは出来ますか?
例えば標準入力の先頭1024バイトだけ読みたいのですが、readやらheadでは
できないみたいでつ。

外部の処理系に投げるしかないのでしょうか。

421:login:Penguin
09/09/27 21:33:25 qHK4F1Gh
すみません

head -c 1024

で事故解決しました。

422:login:Penguin
09/09/28 12:47:00 VZAZLgKn
Bash で並列処理はできますか?

バックグラウンドでプロセスを実行する方法が考えられますが
標準出力を変数に代入できません。

スレッドみたいなものがあればいいのですが。
アドバイスよろしくです。

423:login:Penguin
09/09/28 13:23:09 RgE5Se+Y
>>422
凝ったことやりたいならちゃんとした言語使った方がいいんじゃないの。

424:login:Penguin
09/09/28 14:19:04 I6g/kNjx
>>422
標準出力の代わりにファイルを利用するだけでいいと思うけれど
何か制限とかあるの?

425:login:Penguin
09/09/28 22:19:09 mq5nI+Gq
>>422
waitとかって使えなかったっけ?

426:422です
09/09/28 22:48:49 ZC7KG7rU
>>424
それも考えたのですが、ちょっとアレゲな文字列を渡したいので
なるべく標準入力経由で流し込めたらいいなーと。

>>425
waitするのはいいのですが、
s=`sleep 10; echo hi` &

これだと、確かにバックグラウンドで実行されますが、出力が変数sに代入されません。

とりあえずtmpfile作ってお茶を濁すか、
スレッドをサポートしている他の言語で書いてみます
ありがとうございました。

427:login:Penguin
09/09/29 09:01:16 PNFzix6B
アレゲな文字列だとなぜ標準入力にしたいのだろう??

428:login:Penguin
09/09/29 22:03:38 to/uYF9s
fifoが使えれば便利なんだけどな。

429:login:Penguin
09/10/23 00:04:27 wj32ZQ75
bash@sygwinです。

echo -e `hoge.exe`
みたいなスクリプトを書いて実行した場合、
hoge.exeの出力(標準出力へ出力)が改行されないのですが、
開業して表示されるようにするにはどうしたらいいですか?

430:login:Penguin
09/10/23 00:06:21 fL6bmEfB
hoge.exe


431:429
09/10/23 00:07:47 wj32ZQ75
サンプルとして hoge.exeとしましたが、
実際は引数をとるプログラムであり、そのためにスクリプトを書いています。

432:login:Penguin
09/10/23 00:08:01 egc7pXKl
printfでおk

433:EriFWUWPcvxE
09/10/23 00:26:28 o9S12OWs
In the case of a clock it is, of course, infinitely unlikely. ,

434:login:Penguin
09/10/23 01:18:00 lIwBP5a7
>>429
| と nkf か iconv かなんか使って
改行コードを変換すればいいかと。

435:login:Penguin
09/10/23 07:31:49 sqWecNL1
要するに、
$ echo `ls`
で改行されないと言ってるんじゃないの?
素直に
$ ls
と打てカス じゃ駄目か。

436:login:Penguin
09/10/23 07:52:35 fL6bmEfB
>>435
>>431を読むに、ダメなんだろう。

437:login:Penguin
09/10/23 10:22:31 iTZCWKBJ
echo "`ls`"

438:veylKBAi
09/10/23 22:03:01 t9W+SBEv
And you get to travel to interesting places and talk to interesting people about interesting questions. ,

439:login:Penguin
09/10/23 22:40:25 fL6bmEfB
Yes I like rice ball.


440:login:Penguin
09/10/25 05:44:06 nuWGLSpK
This is a Tom

441:login:Penguin
09/11/04 22:54:27 MYi0pRqJ
Bash シェルスクリプトで、
実行後にコマンドラインに文字列を入力した状態にするのは
可能ですか?

$ ./x.sh
$ abc ←'abc' が入った状態にする

シェルスクリプトでなくて、C とかでもよいですが。


442:login:Penguin
09/11/05 10:53:31 yUF/IyOA
>実行後にコマンドラインに文字列を入力した状態にするのは
set ?

>$ ./x.sh
>$ abc ←'abc' が入った状態にする
read ?

443:441
09/11/05 19:29:56 gkVZzLQn
x.sh が終了した後に、
コマンドラインにキーボードで 'abc' と入力した状態になっている
という意味あいです。


444:login:Penguin
09/11/05 19:59:20 NZnr/6iR
それ、もしできるのなら
セキュリティ的にマズーくないか?

445:login:Penguin
09/11/06 00:09:34 eRT3M+Ha
>>443
なんでそんなことしたいの?

446:login:Penguin
09/11/06 08:33:57 mW6ePEE5
小数点第三位くらいの数値を1000で割りたいのですが、bcで計算すると0.123456が.123456にされてしまって正しくrrdtoolに値を渡せなくて困っています。
どなたか対策をご存知の方がいらっしゃいましたらご教授頂けないでしょうか。


447:login:Penguin
09/11/06 12:03:55 eRT3M+Ha
>>446
sed 's/^\./0./'

448:441
09/11/06 19:41:15 /t9QHrwg
>445
ctrl-r で、history のリストから検索して、
ctrl-e とすると、実行ではなく編集になりますよね、
あれがやりたかったんです。

ただ、その検索の部分を(例えば)grep で検索したり、
選ぶ部分をメニュー形式というか対話型にしたり、(その他もろもろ)
結果を実行ではなく、編集にしたい。
なので、シェルスクリプトとかで実行した結果をコマンドラインに
入れられないかなと思ったんです。
ちと無理だったかな。

>>442,444,445 どうもです。

449:login:Penguin
09/11/06 19:45:45 q+Z8sAfI
eshell使えば

450:login:Penguin
09/11/06 19:46:49 eRT3M+Ha
>>448
コマンドラインに戻す必要あるのかな。
そのアプリの中で編集させて実行しちゃえば?

451:login:Penguin
09/11/06 21:42:41 ebfIAKEi
>>448
bashなら、↓で実現できないかな?

$ cat hoge.sh
echo `date` >> ~/.bash_history

$ sh hoge.sh

$ history -r
$ history | grep 2009
15 2009年 11月 6日 金曜日 21:37:38 JST
16 history | grep 2009
$ shopt -s histverify
$ !15
2009年 11月 6日 金曜日 21:37:38 JST
(histverifyがonだとカーソルはコマンドラインの行に位置したままで、編集可)

# 嘘書いてるかもしれんので、間違ってたら指摘求む

452:login:Penguin
09/11/06 21:57:06 ebfIAKEi
最初に
HISTFILE=/tmp/.bash_history
とかして一時ファイルにしたほうがよいかも

453:login:Penguin
09/11/06 22:03:08 CfRBFuVC
質問。環境はbashです。

URLをテキストファイルに溜め込むスクリプトを作りたくて
弄りはじめたんですが、詰まってしまったので‥ 他力本願!

希望する結果: 
$echo ${URL} > url.txt

$cat url.txt

URLリンク(aaaa.co.jp)<)
としたい。

#!/bin/bash
NUM=0
while [ ${NUM} -lt 5 ]
do
URL=`zenity --entry "$1"`
NUM=`expr ${NUM} + 1`
done

URLに複数の文字列を溜め込みたいのですがどうするべきでしょうか?
ググってみると配列?というやり方があるようなのですが、まだ理解できません

教えてください。

454:login:Penguin
09/11/06 22:17:20 wQA60fmy
>>453
zenityって何のこっちゃ。配列を使うとこうなる。

$ URL=("foo" "bar")
$ for url in ${URL[@]}; do echo ${url}; done
foo
bar

…が、単に${URL}に空白区切りのURLを入れておいて、
sedなりtrなりを通して1行ずつ出力すれば良いだけの話ではないのか?

$ URL="foo bar"
$ echo ${URL} | sed 's; ;\n;g'
foo
bar
$ echo ${URL} | tr ' ' '\n'
foo
bar

455:login:Penguin
09/11/06 23:02:57 CfRBFuVC
>>454
>zenityって何のこっちゃ。
なんか便利そうだなぁと思ってw
zenity使わんでもいいんだけど、常に端末開いてるわけじゃないから操作的に楽かなぁと‥
んで、溜め込むURLは決まってるわけじゃなくて、ブックマーク的な感覚で使うつもり。


$ URL=("foo" "bar")
は、わかったけど
$ for url in ${URL[@]}; do echo ${url}; done
は、${URL[@]} を 一行づつ url に代入して、それを一行づつ出してるってこと?

ってことは、って考えた結果

while [ ${V_NUM} -lt 5 ]
do
URL=("${URL[@]}" `zenity --entry "$1"`)
V_NUM=`expr ${V_NUM} + 1`
done

echo "${URL[@]}"

a b c d e と順に打っていったら

$ echo "${URL[@]}"
a b c d e
と返ってきた。

結果だけみると動作してるように見えるけど、合ってますか?
なんとなく配列のイメージはわかったような気がする・‥
# sed とか 正規表現 とか覚えたら色々出来そうだ。。。と夢見てる段階w

456:login:Penguin
09/11/07 00:24:25 27rGR1FA
>>455
配列の話をしているからbash前提で話すが、

・zenityが返す値(URL)を""でエスケープしておかないと、URLにスペースが含まれていたときにハマる。
・単純に5回繰り返すだけならwhileとカウンタを使うよりもforを使ったほうがいい。

for i in {1..5}; do [処理]; done
for i in `seq 5`; do [処理]; done

457:login:Penguin
09/11/07 01:39:27 CteOVE+c
>>456
なるほど。わざとスペースを入れて試してみました。
単純に5回繰り返すつもりなので、アドバイス通りにfor文でもやってみたいとおもいます。

>>454 >>456
どうもありがとうございました。

458:login:Penguin
09/11/11 00:08:25 ISVpZi0Z
bashの配列なのですが

# ls
お宝動画 有名女優の秘部大百科

というファイルがあって

files=(`ls`)
echo "${files[0]}"

とすると「お宝動画」しか表示されませんよね

これをちゃんとしたファイル名、空白を含む値を代入するには
どうすればいいのでしょうか?




459:login:Penguin
09/11/11 10:05:24 FBEaA7LT
>>458
IFSがデフォで空白・タブ・改行になってると思うので
IFSから空白を除く




460:login:Penguin
09/11/11 13:32:06 OlX5y2f2
そのファイル名の部分をもっと当たり障りの無いファイル名に変えて書けよww

461:login:Penguin
09/11/11 19:26:47 h7rzLTxQ
Bachで条件付バックアップスクリプトを組みたいのですが
どう書いて良い物か分からなくなってしまったのでご教授
お願いします。

< やりたい事 >
任意のフォルダ配下でタイムスタンプがN日経過したものをtar.gzで
圧縮して、そのファイルを削除したい。

たとえば、/home配下に test1・test2・test3と言う3つのフォルダがあって
最終アクセス(ファイル操作)が30日以前のファイルを/home/backupに
タイムスタンプ.tar.gz形式で保存し、バックアップ後そのファイルを削除する。

test1フォルダ内
-rw-rw-r-- 1 root root 10K 10月 09 00:00 /home/test1/hoge.txt
-rw-rw-r-- 1 root root 10K 10月 10 00:00 /home/test1/higetxt

tes21フォルダ内
-rw-rw-r-- 1 root root 10K 10月 11 00:00 /home/test2/hoge.txt
-rw-rw-r-- 1 root root 10K 11月 01 00:00 /home/test2/higetxt

test3フォルダ内
-rw-rw-r-- 1 root root 10K 11月 09 00:00 /home/test3/hoge.txt
-rw-rw-r-- 1 root root 10K 11月 11 00:00 /home/test3/higetxt

n日後のファイルを検索するところまで調べて下記のようなコマンドを
使うのだろうと思っているのですが、それ以降どうしてよいものか・・・・。
find /home -type f -daystart -mtime +30 |fgrep -v /.

長くなりましたがご教授お願いします。

462:login:Penguin
09/11/12 00:26:46 VaDsQREP
教授は外出中です

463:login:Penguin
09/11/12 00:42:44 MDFmvAz9
バッハねぇ。

464:login:Penguin
09/11/12 23:09:37 ou+qWNnh
>>461
TARGET=`find /home -type f -daystart -mtime +30 |fgrep -v /. `
tar cvzf `date +%Y%m%d`.tar.gz $TARGET && rm $TARGET

465:login:Penguin
09/11/13 10:24:58 WdvDAtlm
>>464
有難う御座います。
やってみます!

466:login:Penguin
09/11/13 11:55:23 YoLOfEvP
test=/var/www/.htaccess-log
という風にしても-logのみが認識されているようでうまく機能しません。
最初に.がある場合のファイルを変数に入れるにはどうすればいいのでしょうか?


467:login:Penguin
09/11/13 11:58:11 U8ZA18uC
$ test=/var/www/.htaccess-log
$ echo $test
/var/www/.htaccess-log
$

認識してるが。

468:466
09/11/13 12:09:11 YoLOfEvP
>>467
すいません。
testの部分がtest-logでした。
$ test-log=/var/www/.htaccess-log
$ echo $test-log
-log
となります。
申し訳ないです。

469:login:Penguin
09/11/13 12:33:52 veh/HZx5
>>468
変数名に-(ハイフン)は使えないと思ったが

470:466
09/11/13 12:45:36 YoLOfEvP
>>469
すいません。
そうなんですか。
最近WEB関連からシェル叩くことがあって作ってたんですがシェルでは変数にハイフン使えないんですね。
修正したらうまくいきました。
ありがとうございます。

471:login:Penguin
09/11/13 15:23:15 mmBbeV5d
区切りたいなら _ 使え。

472:login:Penguin
09/11/13 20:07:30 csbg7Gm/
>>466

>>5
>・思い通りに動かないときは、まずは sh -x でトレースしましょう。

473:login:Penguin
09/12/07 12:06:33 XdJnANaN
[ string ] と、[ -n string ] の違いについてお尋ねします。
[ $(cat /dev/null) ] が偽になるのに対して、[ -n $(cat /dev/null) ] は真になってしまうのですが、何が違うのでしょうか。
[ -z $(cat /dev/null) ] は真になるので、なんだか -nだけが仲間外れな気がします。


474:login:Penguin
09/12/07 13:25:47 OGpjrFHy
>>473
それだと $(cat /dev/null) が消えて引き数がなくなって
[ ]
[ -n ]
[ -z ]
になる。
なんでそういう挙動になるかは bash の test.c でも読んでもらうとして、
その挙動を避けるには
[ "" ]
[ -n "" ]
[ -z "" ]
にすればいい。

475:473
09/12/07 13:46:33 5UzhKh29
>>474
なるほど納得です。
そう言えば変数が空文字列になってしまう場合を考慮してクォートしろと聞いた記憶があるような気がします。
素早いお返事ありがとうございました。ソースもあとで読んでおきます。


476:login:Penguin
09/12/13 00:31:23 h59G/AZL
よくダウンロードとかすると何%まで完了してるかみたいなのを
動的に出力するのってどうやんの?

477:login:Penguin
09/12/13 01:45:44 k2yGj3y5
普通に wget でいいんじゃない?

478:476
09/12/13 02:23:19 h59G/AZL
>>477
ダウンロードに限らず
yumとかbuildするときに%を示す数値が動的に変わっていくじゃないですか。
あれ、どうやって実装してんのかなぁと。


誰かわかる?

479:login:Penguin
09/12/13 02:27:41 /qP8xinl
yumってpythonだっけか
そういうライブラリがあるんでないの

シェルスクリプトでやりたいならこういうのがある
URLリンク(www.theiling.de)

480:login:Penguin
09/12/13 03:38:56 s0ebrxv6
>>478
バックスペースを然るべき回数売って表示し直し

481:login:Penguin
09/12/13 11:14:43 45+rg1Ww
画面制御の話題だったの?
このスレ的には tput あたりでやるのが正しいのだろうか。

482:login:Penguin
09/12/13 11:23:29 1bGElD/p
>>478
$ man console_codes

483:login:Penguin
09/12/13 11:50:06 k2yGj3y5
このスレ的には dialog とか whiptail じゃないの。

484:login:Penguin
09/12/13 18:57:54 7EV0TAof
普通の文章を書いた平文テキストをxtermに関連付けして開くと
実行権もないのにxtermがいくつも開いてフリーズします。

なぜですか?

485:login:Penguin
09/12/13 19:25:45 VEJMKGLd
「関連付けして開く」ってどういう概念?

486:login:Penguin
09/12/13 19:31:32 7EV0TAof
普通は表示とか端末で実行とか聞かれるので、右クリメニューに入れました

487:login:Penguin
09/12/13 19:38:48 8kXkcLfR
Ubuntu使ってるの?

488:login:Penguin
09/12/13 22:54:17 u+Xt7Oyd
>>486
ごめん。尋ねておいて悪いけど、
「関連付けして開く」や「右クリメニューに入れ」るってのが判らない。
なので助言できない。

489:login:Penguin
09/12/13 22:58:13 X8Bwu1bm
>>484
Windowsの関連づけの感覚?
GNOMEであれば、プロパティから開くアプリ指定してるとかってことか?

試しにユーザーを新しいの作って再現するかどうか試してみたら?
もし再現できなければ ~/.gconf* ~/.gnome* とか退避して削除してログインしなおしてみるとか。

内容からして、くだ質のほうがアドバイスもらえると思うよ。

490:login:Penguin
09/12/13 23:54:09 3DX9cdGt
>>484
「xterm を起動できるかどうか」は
「xterm を実行する権限があるかどうか」で決まることだから、
「平文テキストを実行する権限」とは関係ない。

$ xterm /tmp/hoge.txt とかやると、
No absolute path found for shell: /tmp/hoge.txt
とかいったメッセージは出るけれど、xterm が起動する。

関連付け はよくわからないけれど、
テキストファイルをまとめて開こうとすれば、
ファイルの数と同じだけ xterm が一気に起動する ってことは想像できる。
CPUとか メモリ/swap とかが足りなければ、フリーズみたいな状況になるかもしれない。

491:login:Penguin
09/12/14 00:20:50 SmNokk3G
>>484
シェルスクリプトの話じゃないでしょう。
こっちで。
くだらねえ質問はここに書き込め! Part 179
スレリンク(linux板)

自分の環境もちゃんと書くこと。
URLリンク(www12.atwiki.jp)

492:login:Penguin
10/01/05 20:34:00 nuI9c99Q
bashで手軽にオブジェクト指向モドキする方法ってありませんか?
とりあえず試みたのですが、スッキリしません。
#!/bin/bash
gal(){
eval "$1"_name="$2"
eval "$1"_age="$3"
eval "$1"_sex="$4"
}

aisatsu(){
eval echo "私は\"\$"$1"_name"、\"\$"$1"_age"歳です。よろしく
ね。"
}

hanasu(){
eval echo "\"\$"$1"_name\"に何の用?"
}

gal "yuka" "由佳" "16" "女"
aisatsu "yuka"
hanasu "yuka"

493:login:Penguin
10/01/05 20:45:01 kbriKfoG
>>492
URLリンク(emasaka.blog65.fc2.com)

494:login:Penguin
10/01/05 20:48:20 nuI9c99Q
>>493
すごいものがあるんですね。
ありがとうございました。

495:login:Penguin
10/01/07 18:16:37 wAYEJTZp
テキストファイルで、指定した文字列を含む最初の行を開始位置とし、先とは別の
文字列を含む行が見つかるまでを削除するにはどうすれば良いでしょうか?

496:login:Penguin
10/01/07 18:20:32 D02SG01g
>>495
sed '/xxx/,/yyy/d'

497:login:Penguin
10/01/08 10:03:28 KgmcRvHm
>>495
ありがとうございます。
sedというのは強力なんですね。

498:login:Penguin
10/01/08 12:52:11 zGQxNXrb
>>497
これで「強力」ってどういう意味?

499:login:Penguin
10/01/08 16:04:10 /auv4CfE
>>498
文字/行削除程度しか知らない初心者にとっては、超強力。

500:497
10/01/08 23:16:45 KgmcRvHm
shの変数を>>496の/xxx/に使いたい場合についてお伺いします。

path=/aaa/bbb
sed "/$path/,/yyy/d"

の様にしても$pathが展開された時点で区切り文字がエスケープされておらず上手く
いきません。
前処理が必要なのか、それともスマートな方法が用意されているのでしょうか?

501:login:Penguin
10/01/08 23:33:25 awvr0YeL
ファイル名はNUL文字以外なら全て使えるんだよね。
ということは、前処理の段階で区切り文字をエスケープする必要があるのかな。

502:497
10/01/08 23:38:17 KgmcRvHm
やはり自前で前処理するわけですね。
sedで簡単に出来そうですね。

503:497
10/01/08 23:51:05 KgmcRvHm
下でできました。

#!/bin/sh -x

var=/aaa/bbb
esc=$(echo $var | sed -e 's/\//\\\//g')

$()の代わりに``を使うとパイプがあるせいか上手くいきませんでした。
実際はどうなのでしょう?
教えて頂けると嬉しいです。

504:login:Penguin
10/01/08 23:52:38 r+fu5lRJ
sed "/\\$path/,/yyy/d" はどうなの?

505:login:Penguin
10/01/08 23:53:13 aqeo86VH
区切り文字を変えるんだよ!

sed '\@foo@,\@bar@d'

506:497
10/01/09 00:07:36 WfSq+WCG
>>504
それだと$pathの先頭にのみ区切り文字がある場合にしか対応していないと思います。

>>505
そういうときに使うのですね。
なるほど。
ありがとうございました。

507:login:Penguin
10/01/10 12:29:36 jRBDc3XG
com1 | com2 | com3

の様なとき、どこかでエラーが起こった場合に、それを知ることはできないでしょうか?
bash3.0以降だと${PIPESTATUS[@]}で可能なようですがshでなんとかならないかと。

508:login:Penguin
10/01/10 12:37:23 E5a795Pl
subshellを使って、
(( com1 判定)| com2 判定 )| com3
みたいな事を見た憶えがするけど、定かでない。

509:初心者
10/01/13 23:30:52 9IUNZoL1
run.shファイルの中で、script_file.shをsourceした場合。
sourceされているscript_fileの中でscript_file自身の絶対パスを得る方法を調べています。

bashの場合はscript_fileの中で$BASH_SOURCEから得られるが、他のシェル(zsh/tcsh/ksh)でscript_file.shのパスを得られる方法を
教えていただけませんか?

>>>>>>>>>>>>>>>>>>>>>>
script_file.shファイルのある場所
/path/to/script_file.sh
>>>>>>>>>>>>>>>>>>>>>>

実行例:
%./run.sh

期待結果:
/path/to/


ファイル <run.sh>の中身
-------------
#!/bin/(sh/zsh/tcsh...)
source $path/script_file.sh
-------------

ファイル script_file:
-------------
script_file_path=`******`
echo $script_file_path;
-------------

510:login:Penguin
10/01/13 23:53:55 rEuhDc/f
>>509
機能知らない分際で答えるとさ
単純に呼ぶんだからさ
source "$path/script_file.sh" "$path/script_file.sh"
とか引数として渡してecho $1とかしても
できちゃったりはするね

511:login:Penguin
10/01/13 23:59:57 rEuhDc/f
期待結果は/path/to/だったかorz
ならsource "$path/script_file.sh" "$path"
でまぁできるといえばできてるけど

512:login:Penguin
10/01/14 00:01:40 4xSyV+UX
/が抜けてたねorz

513:login:Penguin
10/01/14 03:10:55 4xSyV+UX
>>507
気になったので書いてみた
>>508氏が言ってるようにもっと楽にできるんだろうけど
ちなみに頭悪いので間違ってる可能性ありと
使い物になってないと思うから 一応動いてるかも程度

514:login:Penguin
10/01/14 03:12:28 4xSyV+UX
function perror(){
stdout=`mktemp`;stdout2=`mktemp`
first=on
until test 1 -eq $# #引数一個の場合は何もしないので注意
do
if test $first = on
then
first=off
$1 1>$stdout 2>/dev/null
judge=$?
fi
if test $judge -eq 0
then
if ! test 2 -eq $#
then
$2<$stdout 1>$stdout2 2>/dev/null
judge=$?
shift
else #最後は標準出力へ
$2<$stdout #最後のcommandの失敗は判定してないので注意
shift
fi
else
echo "$1" error 1>&2
break
fi
stdout_hold=$stdout # 入れ替え
stdout=$stdout2
stdout2=$stdout_hold
done
rm $stdout $stdout2;unset stdout stdout2 stdout_hold first judge
}

515:login:Penguin
10/01/14 03:15:58 4xSyV+UX
perror 'ls /usr/bin' 'sed 's/^/test/g'' 'grep gcc' less

perror 'ls /usr/bin' 'sed 's/^/test/g'' 'tar xf' less

まぁ一応動いてるのかな!?

516:login:Penguin
10/01/14 17:27:09 FVM4x3d9
sed -e '$-3,$d' file
とすると
sed: -e expression #1, char 2: unknown command: `-'
というエラーがでます。

versionは4.1.5ですが上記の使い方間違ってますか?

517:login:Penguin
10/01/14 17:55:26 EAAIjJ3h
vi じゃないんだからそんな指定できないよ


518:login:Penguin
10/01/14 22:28:16 dyjWaACs
>>507
エラーが起こったかどうか *見えればいい* ってだけならこんなやりかたも。

(com1 ; echo $?>/tmp/test.log) | (com2 ; echo $?>>/tmp/test.log) | 略
(com1 ; xmessage com1:$?&) | (com2 ; xmessage com2:$?&) | 略

519:login:Penguin
10/01/15 09:27:35 vHlv+w15
>>516
つhead -n -4 file

520:login:Penguin
10/01/15 10:37:34 0e3bcUwp
>>519
-nの値に負の数を与えられるんですね。

521:login:Penguin
10/01/15 11:44:19 exz65txq
ダブルクォーテーションで囲まれた文字列を抜き出すってどうやればいいんだ?
cutでもexprでも俺には無理だった、絶対サクッとできるはずなのに悔しすぎる…

522:login:Penguin
10/01/15 12:29:58 n61dnfY7
grep -o '"[^"]*"'

523:login:Penguin
10/01/15 13:14:40 exz65txq
>>522
今日一日崇めさせてくれ

524:login:Penguin
10/01/15 20:34:53 cwTkNqT3
1日限定かい。

525:login:Penguin
10/02/07 15:35:53 lbKDrfi6
$ df -h /tmp
Filesystem Size Used Avail Use% マウント位置
tempfs 512M 89M 424M 18% /tmp

の%の前の数字(ここでは18)だけ取り出したいんだけど、どうすればよいですか?

526:login:Penguin
10/02/07 15:58:04 vkq5/P4Z
awk使う

527:login:Penguin
10/02/07 16:03:00 U7v7s3zM
とても安直な方法なので最適解には程遠いと思いますが

df -P /tmp | grep '/tmp$' | awk '{print $5;}' | sed 's/%$//'

528:login:Penguin
10/02/07 16:06:14 lbKDrfi6
>>526,527
ありがとう。


529:526
10/02/07 19:06:47 dchTEc3Z
>>527
おまwww

df -h /tmp | awk '/\/tmp/ { print gensub("%", "", "", $5) }'

530:login:Penguin
10/02/07 19:16:50 U7v7s3zM
いやそれくらい知ってる

531:login:Penguin
10/02/07 19:30:22 Fd1qGpin
複数行のキーワードをfgrepする手はないスか?
キーワードの行数は不定。以下例では仮に2行とします。
$ cat -n text
1  abcdefg*******
2  [hijklmn-z]
3  abcdefg*******
$ fgrep 'abcdefg*******なんとか[hijklmn-z]' text
text:1:abcdefg*******
text:2:[hijklmn-z]
1と2行目のペアはヒットするが、3行目がヒットしてはいけない。

532:531
10/02/07 19:32:00 Fd1qGpin
ああっと。
上の検索コマンドはgrepファミリーでなくても良いですが、perlは駄目です。

533:login:Penguin
10/02/07 19:58:16 KEZIcPfj
宿題は自分でやれよ

534:login:Penguin
10/02/07 21:03:26 U7v7s3zM
#!/bin/bash
AWKFILE="/tmp/$0.$$"
trap "rm -f ${AWKFILE}" 0
KV=0
echo "BEGIN{s=0;h=\"\"};" > "${AWKFILE}"
for keyword in $*; do
echo "/${keyword}/{if (s==${KV}){s=s+1;h=h NR \"\\t\" \$0 \"\\n\";} else {s=0;h=\"\"}};"
KV=`expr ${KV} + 1`
done >> "${AWKFILE}"
echo "{if (s==$#){print h;s=0;h=\"\";}};" >> "${AWKFILE}"
awk -f "${AWKFILE}"

535:login:Penguin
10/02/07 21:24:02 U7v7s3zM
いろいろ残念な部分があるけど、そこは使う人が直してね

536:login:Penguin
10/02/07 21:36:26 5ZhdKpPZ
>>534
んー。やっぱりスクリプト生成みたいになりますか。
私以外の人が考えてもすっきり行かない事が解りました。ありがとうございます。

>>533
この手の宿題を出す学校はあまり無いんじゃないかな。

537:login:Penguin
10/02/07 21:41:15 U7v7s3zM
自分でできない部分だけ聞きなよ

538:login:Penguin
10/02/07 21:51:00 UYJWIskO
>>536
質問に答えようとしてない奴の発言にはいちいち反応するな。

「教えてくれ」ってやつと「宿題は自分でやれ」ってやつは
「歩み寄る可能性がない」からスルーしたほうがいい。
専ブラ使える環境なら、NGワードに「宿題」って単語を入れておいたほうがいいよ。

539:login:Penguin
10/02/07 22:05:12 U7v7s3zM
>>531はいろいろ引っかかる部分があるから正直俺も最初は回答しようかどうか迷ったぞ
返事を聞いて>>538も出てああやっぱりかと思ったし...

と戯言はここまでにしとく

540:login:Penguin
10/02/07 22:36:33 5ZhdKpPZ
>>537
>自分でできない部分だけ聞きなよ
すっきりと実現できなかったので尋きました。というか、
往々にしてこの手のことを実現すると車輪の再発明になってしまってる事が多い。
なので、他の人も決定的な車輪を持ちあわせていないという情報はとても大切で、
有難く思っています。

541:login:Penguin
10/02/07 22:44:49 qrQKR8fu
典型的なゆとり脳というか
なんでこんな上から目線なんだろ
そういうのは自分で書いたの張ってから言えよ

542:login:Penguin
10/02/07 22:46:48 U7v7s3zM
>>540
実現できたなら実現方法そのものを聞く必要はない
実現方法を提示してより良くするにはどこを直せばいいか聞けばいい
他人のコストは格段に違うだろうし、回答も違ったものになる

というかお前>>526だろ?


543:526
10/02/07 23:05:32 sirvd3yi
こらこらw
静観してる俺まで巻き込むなよ

544:login:Penguin
10/02/07 23:09:51 fkJC7wtF
>>542
そうですね。その点は気をつけたいと思います。

>というかお前>>526だろ?
いや違う。
むしろ、>>529(526)にしろあなたにしろ"/tmp"をマッチさせている時点で、要求条件から逸脱していると思っている。

545:login:Penguin
10/02/07 23:30:09 U7v7s3zM
ID変えながら大変ですね。元に戻せないの?

546:login:Penguin
10/02/07 23:44:26 sirvd3yi
どうやって戻すんだよw

547:login:Penguin
10/02/07 23:49:53 qVmLGOqM
昼間寝ていたら正規表現使う夢を見た気がする、なぜだ

548:login:Penguin
10/02/07 23:56:03 U7v7s3zM
同じIPが取れるまでトライ!(やったことないので同じになるのか知らん)

549:login:Penguin
10/02/08 06:35:08 wgsJNc2d
>>548
お前ちょっと黙れ。

550:login:Penguin
10/02/08 08:30:32 shLyrCGR
U7v7s3zMが取れるまでトライし続けてるのかなw

551:login:Penguin
10/02/08 12:19:18 2AE05UQA
答えてもらっておいて「まあそんなもんだよね」

これはひどい

552:login:Penguin
10/02/08 17:02:25 h/fx9poh
複数の数字に,同じ四則演算(+,−,*,/)を繰り返した計算結果を表示するシェルスクリプトを,cshシェルスクリプトで書け。
(基本仕様)
@ コマンドとして実行できる.(シェルコマンドである.)
A 入力した数字を計算できる.
B 入力できる数字の個数は2以上とする.
C 四則演算子(+,−,*,/)を選択,または直接入力して
数字1□数字2□・・・□数字N (□=+ or − or * or /,N≧2)
の計算結果を出力する.
D 四則演算子以外の記号が入力された場合,エラーメッセージを出力する.
(ポイント)
? シェルコマンドにするには,スクリプトの最初に(#!で始まる)おまじないを書く.
? 標準入力から文字列を入力するには $< を用いる.
? コマンドラインに引数を指定した場合は,その引数は変数$argvに格納されている.その各要素を参照するには,$argv[1],$argv[2](または$1,$2)などとする.
? 四則演算には @ コマンドが使用できる.(ただし,整数しか扱えない.)

誰かわかるひとおねがいします(今週中にお願いします!)

553:login:Penguin
10/02/08 17:05:28 llGt0cFK
何箇所でマルチしてんだよwww

554:sage
10/02/08 17:06:29 kDoV0MXx
宿題は自分でやろうね。

555:login:Penguin
10/02/08 20:38:54 Wyshj96C
後から読んで526にワロタ
カワイソスw

556:login:Penguin
10/02/19 00:14:13 c2ocdmWw
df -h /tmp | sed 's/.*\([0-9][0-9]*\)%.*/\1/'

557:login:Penguin
10/02/20 23:34:54 vDEbYPUT
以下の結果を出力するシェルを,bashスクリプトで書け.
(基本仕様)
・コマンドとして実行できる.(シェルコマンドである.)
・ユーザーが10000以上99999以下の5桁の数字を入力する.
・その数字を7で割って1余り,かつ13で割って2余った場合は Daikichiと表示する.
・それ以外で,13で割って2余った場合は Chuukichiと表示する.
・それ以外で,7で割って1余った場合は Shoukichiと表示する.
・それ以外の場合は Hazureと表示する.
・入力した文字が10000以上99999以下の数字以外の場合はエラーメッセージを表示する.
・できる人は,コマンドライン引数でDaikichiなどの文字を変更できるようにする.
(ポイント)
☆シェルコマンドにするには,スクリプトの最初に(#!で始まる)おまじないを書く.
☆標準入力から文字列を入力するには read を用いる.
☆コマンドラインの引数は,$@に格納されている.(その要素は $1 $2 ...)
☆四則演算には $(( )) コマンドが使用できる.(ただし,整数しか扱えない.)


誰かわかるひとお願いします

558:login:Penguin
10/02/20 23:37:36 8qh4FPc7
>>557
> 誰かわかるひとお願いします
まぁ、Linux使える人ならば、誰でも分かる
"学校" の課題ですわな(w
# "学校" は 大学 でない。

559:login:Penguin
10/02/20 23:46:16 WE3Utbg7
シェルスクリプトの課題を出す学校ってあるんだね。
ふつーは、CとかJavaを中心にやるものだと思ってた。

560:login:Penguin
10/02/21 00:00:05 WDiWxw8N
#!/bin/bash
read read
echo $((read%3))`echo 5p$(echo e$(echo l5b$(echo 6M5)q2)744$(echo GsCg$(echo =$(echo =))))|base64 -d`

561:login:Penguin
10/02/21 00:16:12 FUNRtF1w
死ねばいいのに

562:login:Penguin
10/02/21 00:27:29 R8eJDQx8
何をお願いされているのだろう。アンケートかな?
回答「わかります」


上から2桁目で四捨五入したい(例: 15 -> 20, 312 -> 300, 9432 -> 9000)
どうやるのが一番簡単かな?

563:login:Penguin
10/02/21 00:39:34 y6fTjKHz
10を底とした対数とって
1.5*10^1
3.12*10^2
9.432*10^3
仮数部を小数点以下で四捨五入する


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

5367日前に更新/221 KB
担当:undef