[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 05/09 19:35 / Filesize : 221 KB / Number-of Response : 848
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

シェルスクリプト総合@LINUX Part5



1 名前:1様 [2009/04/03(金) 22:17:43 ID:0qFlvOW9]
UNIX板のスレを見ている方も多数おられるかと思いますが、
まあそれはそれとして、BASHウゼーとか言われる心配なく
平和にLINUX的スクリプト談義しましょうよ。

初めての自作スクリプト、自信ないから見てください。な初心者から
トリッキーな技を駆使した作品を披露したい、蘊蓄を語りたい上級者まで
いろいろな人に参加して頂けると嬉しいです。

perlやらPythonやらの話が混ざっても良いんでない?

Part4 : pc11.2ch.net/test/read.cgi/linux/1210999497/
Part3 : pc11.2ch.net/test/read.cgi/linux/1184077033/
Part2 : pc11.2ch.net/test/read.cgi/linux/1154578200/
Part1 : pc8.2ch.net/test/read.cgi/linux/1121994321/

>>2-5あたりに色々と。

433 名前:EriFWUWPcvxE mailto:bdhcd0a0.@gmail.com [2009/10/23(金) 00:26:28 ID:o9S12OWs]
In the case of a clock it is, of course, infinitely unlikely. ,

434 名前:login:Penguin mailto:sage [2009/10/23(金) 01:18:00 ID:lIwBP5a7]
>>429
| と nkf か iconv かなんか使って
改行コードを変換すればいいかと。

435 名前:login:Penguin mailto:sage [2009/10/23(金) 07:31:49 ID:sqWecNL1]
要するに、
$ echo `ls`
で改行されないと言ってるんじゃないの?
素直に
$ ls
と打てカス じゃ駄目か。

436 名前:login:Penguin mailto:sage [2009/10/23(金) 07:52:35 ID:fL6bmEfB]
>>435
>>431を読むに、ダメなんだろう。

437 名前:login:Penguin mailto:sage [2009/10/23(金) 10:22:31 ID:iTZCWKBJ]
echo "`ls`"

438 名前:veylKBAi mailto:cb1353an.@gmail.com [2009/10/23(金) 22:03:01 ID:t9W+SBEv]
And you get to travel to interesting places and talk to interesting people about interesting questions. ,

439 名前:login:Penguin mailto:sage [2009/10/23(金) 22:40:25 ID:fL6bmEfB]
Yes I like rice ball.


440 名前:login:Penguin mailto:sage [2009/10/25(日) 05:44:06 ID:nuWGLSpK]
This is a Tom

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

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

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




442 名前:login:Penguin mailto:sage [2009/11/05(木) 10:53:31 ID:yUF/IyOA]
>実行後にコマンドラインに文字列を入力した状態にするのは
set ?

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

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


444 名前:login:Penguin mailto:sage [2009/11/05(木) 19:59:20 ID:NZnr/6iR]
それ、もしできるのなら
セキュリティ的にマズーくないか?

445 名前:login:Penguin mailto:sage [2009/11/06(金) 00:09:34 ID:eRT3M+Ha]
>>443
なんでそんなことしたいの?

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


447 名前:login:Penguin mailto:sage [2009/11/06(金) 12:03:55 ID:eRT3M+Ha]
>>446
sed 's/^\./0./'

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

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

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

449 名前:login:Penguin mailto:sage [2009/11/06(金) 19:45:45 ID:q+Z8sAfI]
eshell使えば

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

451 名前:login:Penguin mailto:sage [2009/11/06(金) 21:42:41 ID: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 mailto:sage [2009/11/06(金) 21:57:06 ID:ebfIAKEi]
最初に
HISTFILE=/tmp/.bash_history
とかして一時ファイルにしたほうがよいかも

453 名前:login:Penguin mailto:sage [2009/11/06(金) 22:03:08 ID:CfRBFuVC]
質問。環境はbashです。

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

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

$cat url.txt

aaaa.co.jp
bbbbaaa.com
としたい。

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

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

教えてください。

454 名前:login:Penguin mailto:sage [2009/11/06(金) 22:17:20 ID: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 mailto:sage [2009/11/06(金) 23:02:57 ID: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 mailto:sage [2009/11/07(土) 00:24:25 ID: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 mailto:sage [2009/11/07(土) 01:39:27 ID:CteOVE+c]
>>456
なるほど。わざとスペースを入れて試してみました。
単純に5回繰り返すつもりなので、アドバイス通りにfor文でもやってみたいとおもいます。

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

458 名前:login:Penguin mailto:sage [2009/11/11(水) 00:08:25 ID:ISVpZi0Z]
bashの配列なのですが

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

というファイルがあって

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

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

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




459 名前:login:Penguin mailto:sage [2009/11/11(水) 10:05:24 ID:FBEaA7LT]
>>458
IFSがデフォで空白・タブ・改行になってると思うので
IFSから空白を除く




460 名前:login:Penguin mailto:sage [2009/11/11(水) 13:32:06 ID:OlX5y2f2]
そのファイル名の部分をもっと当たり障りの無いファイル名に変えて書けよww

461 名前:login:Penguin mailto:sage [2009/11/11(水) 19:26:47 ID: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 mailto:sage [2009/11/12(木) 00:26:46 ID:VaDsQREP]
教授は外出中です

463 名前:login:Penguin mailto:sage [2009/11/12(木) 00:42:44 ID:MDFmvAz9]
バッハねぇ。

464 名前:login:Penguin mailto:sage [2009/11/12(木) 23:09:37 ID: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 mailto:sage [2009/11/13(金) 10:24:58 ID:WdvDAtlm]
>>464
有難う御座います。
やってみます!

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


467 名前:login:Penguin mailto:sage [2009/11/13(金) 11:58:11 ID:U8ZA18uC]
$ test=/var/www/.htaccess-log
$ echo $test
/var/www/.htaccess-log
$

認識してるが。

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

469 名前:login:Penguin mailto:sage [2009/11/13(金) 12:33:52 ID:veh/HZx5]
>>468
変数名に-(ハイフン)は使えないと思ったが

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

471 名前:login:Penguin mailto:sage [2009/11/13(金) 15:23:15 ID:mmBbeV5d]
区切りたいなら _ 使え。



472 名前:login:Penguin mailto:sage [2009/11/13(金) 20:07:30 ID:csbg7Gm/]
>>466

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

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


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

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


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

477 名前:login:Penguin mailto:sage [2009/12/13(日) 01:45:44 ID:k2yGj3y5]
普通に wget でいいんじゃない?

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


誰かわかる?

479 名前:login:Penguin mailto:sage [2009/12/13(日) 02:27:41 ID:/qP8xinl]
yumってpythonだっけか
そういうライブラリがあるんでないの

シェルスクリプトでやりたいならこういうのがある
www.theiling.de/projects/bar.html

480 名前:login:Penguin mailto:sage [2009/12/13(日) 03:38:56 ID:s0ebrxv6]
>>478
バックスペースを然るべき回数売って表示し直し

481 名前:login:Penguin mailto:sage [2009/12/13(日) 11:14:43 ID:45+rg1Ww]
画面制御の話題だったの?
このスレ的には tput あたりでやるのが正しいのだろうか。



482 名前:login:Penguin mailto:sage [2009/12/13(日) 11:23:29 ID:1bGElD/p]
>>478
$ man console_codes

483 名前:login:Penguin mailto:sage [2009/12/13(日) 11:50:06 ID:k2yGj3y5]
このスレ的には dialog とか whiptail じゃないの。

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

なぜですか?

485 名前:login:Penguin mailto:sage [2009/12/13(日) 19:25:45 ID:VEJMKGLd]
「関連付けして開く」ってどういう概念?

486 名前:login:Penguin mailto:sage [2009/12/13(日) 19:31:32 ID:7EV0TAof]
普通は表示とか端末で実行とか聞かれるので、右クリメニューに入れました

487 名前:login:Penguin mailto:sage [2009/12/13(日) 19:38:48 ID:8kXkcLfR]
Ubuntu使ってるの?

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

489 名前:login:Penguin mailto:sage [2009/12/13(日) 22:58:13 ID:X8Bwu1bm]
>>484
Windowsの関連づけの感覚?
GNOMEであれば、プロパティから開くアプリ指定してるとかってことか?

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

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

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

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

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

491 名前:login:Penguin mailto:sage [2009/12/14(月) 00:20:50 ID:SmNokk3G]
>>484
シェルスクリプトの話じゃないでしょう。
こっちで。
くだらねえ質問はここに書き込め! Part 179
pc11.2ch.net/test/read.cgi/linux/1257056891/

自分の環境もちゃんと書くこと。
www12.atwiki.jp/linux2ch/pages/5.html#id_d2fb2105



492 名前:login:Penguin [2010/01/05(火) 20:34:00 ID: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 mailto:sage [2010/01/05(火) 20:45:01 ID:kbriKfoG]
>>492
emasaka.blog65.fc2.com/blog-entry-379.html

494 名前:login:Penguin mailto:sage [2010/01/05(火) 20:48:20 ID:nuI9c99Q]
>>493
すごいものがあるんですね。
ありがとうございました。

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

496 名前:login:Penguin mailto:sage [2010/01/07(木) 18:20:32 ID:D02SG01g]
>>495
sed '/xxx/,/yyy/d'

497 名前:login:Penguin mailto:sage [2010/01/08(金) 10:03:28 ID:KgmcRvHm]
>>495
ありがとうございます。
sedというのは強力なんですね。

498 名前:login:Penguin mailto:sage [2010/01/08(金) 12:52:11 ID:zGQxNXrb]
>>497
これで「強力」ってどういう意味?

499 名前:login:Penguin mailto:sage [2010/01/08(金) 16:04:10 ID:/auv4CfE]
>>498
文字/行削除程度しか知らない初心者にとっては、超強力。

500 名前:497 mailto:sage [2010/01/08(金) 23:16:45 ID:KgmcRvHm]
shの変数を>>496の/xxx/に使いたい場合についてお伺いします。

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

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

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



502 名前:497 mailto:sage [2010/01/08(金) 23:38:17 ID:KgmcRvHm]
やはり自前で前処理するわけですね。
sedで簡単に出来そうですね。

503 名前:497 mailto:sage [2010/01/08(金) 23:51:05 ID:KgmcRvHm]
下でできました。

#!/bin/sh -x

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

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

504 名前:login:Penguin mailto:sage [2010/01/08(金) 23:52:38 ID:r+fu5lRJ]
sed "/\\$path/,/yyy/d" はどうなの?

505 名前:login:Penguin mailto:sage [2010/01/08(金) 23:53:13 ID:aqeo86VH]
区切り文字を変えるんだよ!

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

506 名前:497 mailto:sage [2010/01/09(土) 00:07:36 ID:WfSq+WCG]
>>504
それだと$pathの先頭にのみ区切り文字がある場合にしか対応していないと思います。

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

507 名前:login:Penguin mailto:sage [2010/01/10(日) 12:29:36 ID:jRBDc3XG]
com1 | com2 | com3

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

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

509 名前:初心者 mailto:zzhong33@yahoo.co.jp [2010/01/13(水) 23:30:52 ID: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 mailto:sage [2010/01/13(水) 23:53:55 ID:rEuhDc/f]
>>509
機能知らない分際で答えるとさ
単純に呼ぶんだからさ
source "$path/script_file.sh" "$path/script_file.sh"
とか引数として渡してecho $1とかしても
できちゃったりはするね

511 名前:login:Penguin mailto:sage [2010/01/13(水) 23:59:57 ID:rEuhDc/f]
期待結果は/path/to/だったかorz
ならsource "$path/script_file.sh" "$path"
でまぁできるといえばできてるけど



512 名前:login:Penguin mailto:sage [2010/01/14(木) 00:01:40 ID:4xSyV+UX]
/が抜けてたねorz

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

514 名前:login:Penguin mailto:sage [2010/01/14(木) 03:12:28 ID: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 mailto:sage [2010/01/14(木) 03:15:58 ID: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 mailto:sage [2010/01/14(木) 17:27:09 ID:FVM4x3d9]
sed -e '$-3,$d' file
とすると
sed: -e expression #1, char 2: unknown command: `-'
というエラーがでます。

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

517 名前:login:Penguin mailto:sage [2010/01/14(木) 17:55:26 ID:EAAIjJ3h]
vi じゃないんだからそんな指定できないよ


518 名前:login:Penguin mailto:sage [2010/01/14(木) 22:28:16 ID:dyjWaACs]
>>507
エラーが起こったかどうか *見えればいい* ってだけならこんなやりかたも。

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

519 名前:login:Penguin mailto:sage [2010/01/15(金) 09:27:35 ID:vHlv+w15]
>>516
つhead -n -4 file

520 名前:login:Penguin mailto:sage [2010/01/15(金) 10:37:34 ID:0e3bcUwp]
>>519
-nの値に負の数を与えられるんですね。

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



522 名前:login:Penguin mailto:sage [2010/01/15(金) 12:29:58 ID:n61dnfY7]
grep -o '"[^"]*"'

523 名前:login:Penguin mailto:sage [2010/01/15(金) 13:14:40 ID:exz65txq]
>>522
今日一日崇めさせてくれ

524 名前:login:Penguin mailto:sage [2010/01/15(金) 20:34:53 ID:cwTkNqT3]
1日限定かい。

525 名前:login:Penguin mailto:sage [2010/02/07(日) 15:35:53 ID:lbKDrfi6]
$ df -h /tmp
Filesystem Size Used Avail Use% マウント位置
tempfs 512M 89M 424M 18% /tmp

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

526 名前:login:Penguin mailto:sage [2010/02/07(日) 15:58:04 ID:vkq5/P4Z]
awk使う

527 名前:login:Penguin mailto:sage [2010/02/07(日) 16:03:00 ID:U7v7s3zM]
とても安直な方法なので最適解には程遠いと思いますが

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

528 名前:login:Penguin mailto:sage [2010/02/07(日) 16:06:14 ID:lbKDrfi6]
>>526,527
ありがとう。


529 名前:526 mailto:sage [2010/02/07(日) 19:06:47 ID:dchTEc3Z]
>>527
おまwww

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

530 名前:login:Penguin mailto:sage [2010/02/07(日) 19:16:50 ID:U7v7s3zM]
いやそれくらい知ってる

531 名前:login:Penguin mailto:sage [2010/02/07(日) 19:30:22 ID: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 mailto:sage [2010/02/07(日) 19:32:00 ID:Fd1qGpin]
ああっと。
上の検索コマンドはgrepファミリーでなくても良いですが、perlは駄目です。

533 名前:login:Penguin mailto:sage [2010/02/07(日) 19:58:16 ID:KEZIcPfj]
宿題は自分でやれよ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<221KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef