- 1 名前:login:Penguin mailto:sage [2008/05/17(土) 13:44:57 ID:9hFWtCOD]
- UNIX板のスレを見ている方も多数おられるかと思いますが、
まあそれはそれとして、BASHウゼーとか言われる心配なく 平和にLINUX的スクリプト談義しましょうよ。 初めての自作スクリプト、自信ないから見てください。な初心者から トリッキーな技を駆使した作品を披露したい、蘊蓄を語りたい上級者まで いろいろな人に参加して頂けると嬉しいです。 perlやらPythonやらの話が混ざっても良いんでない? 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あたりに色々と。
- 237 名前:login:Penguin mailto:sage [2008/06/23(月) 22:18:40 ID:t++FsyID]
- #!/bin/sh
date "+%Y/%m/%d %T" | xsel -i
- 238 名前:login:Penguin mailto:sage [2008/06/23(月) 22:26:25 ID:E3xyu4wD]
- >>237
おお! 見事に表示されました。 dateごと渡してやればよかったのですね。勉強になりました。 ありがとうございました。
- 239 名前:232 mailto:sage [2008/06/23(月) 22:40:24 ID:7JKTU8Gt]
- ごめん! (汗)
- 240 名前:login:Penguin mailto:sage [2008/06/23(月) 22:50:21 ID:xSXSaj7v]
- >>238
> dateごと渡してやればよかったのですね。 別に echo $DATE | xsel -i でもいいよ。
- 241 名前:login:Penguin mailto:sage [2008/06/23(月) 22:51:35 ID:xSXSaj7v]
- >>236
> DATE= $y/$m/$d/" "$t 問題はここだ。 = の後の空白が余分。 むしろ DATE="$y/$m/$d/ $t" と書くべき。
- 242 名前:login:Penguin mailto:sage [2008/06/24(火) 08:29:39 ID:/ei8InYp]
- >>239
いえいえ。 >>240-241 空白がまずかったのですね。気がつきませんでしたorz ダブルクオーテーションでくくると文字列がそのまま出てくる気がして、 > DATE= $y/$m/$d/" "$t の途中の" "は空白を出力したつもりでしたが、全体をくくってやってもよかったのですね。実行して確認しました。 #!/bin/sh y=`date +%Y` m=`date +%m` d=`date +%d` t=`date +%T` DATE="$y/$m/$d/ $t" echo $DATE | xsel -b -i (xsei -b -iでクリップボードにもコピー出来るようにしてあります。xsel -pでも動きました。) 見え栄は>>237のほうがいいですねw 勉強になりました。ありがとうございました!
- 243 名前:login:Penguin mailto:sage [2008/06/24(火) 08:33:49 ID:/ei8InYp]
- 一部ミスりました
× ダブルクオーテーションでくくると文字列がそのまま出てくる気がして、 ○ ダブルクオーテーションでくくると文字列がそのまま出てくる気がして、 全体をくくらずにしていました。
- 244 名前:login:Penguin mailto:sage [2008/06/24(火) 09:36:52 ID:7q12wxxB]
- >>242
> ダブルクオーテーションでくくると文字列がそのまま出てくる気がして、 www.linux.or.jp/JM/html/GNU_bash/man1/bash.1.html#lbAQ YEAR=2008 echo "$YEAR" echo '$YEAR'
- 245 名前:login:Penguin mailto:sage [2008/06/24(火) 10:37:39 ID:/ei8InYp]
- >>244
そうだったのですか、シングルクオーテーションは文字として出てきて、ダブルクオーテーションでは、$も例外として、$が機能すると言うことですか。 いやはや知らないことだらけでした。勉強になります。ありがとうございます。
- 246 名前:login:Penguin mailto:sage [2008/06/24(火) 19:18:26 ID:GHnoP+if]
- 初心者の書くスクリプトは、むしろダブルクォートを忘れて
インジェクション的な事故多発なわけですがw if [ x"$HOGE" == x"DQN" ] ; then ちゃんとこういう風にまで保護されているスクリプトは稀。
- 247 名前:login:Penguin mailto:sage [2008/06/24(火) 19:36:34 ID:RnXDPQy/]
- 俺さ、その x が何のためにあるのか、以前から不思議なんだ。
if [ "${HOGE}"="DQN" ] ; then との違いは何?
- 248 名前:login:Penguin mailto:sage [2008/06/24(火) 19:40:10 ID:y8G0f9r3]
- $HOGEが未定義の場合どうなるんだ?
- 249 名前:login:Penguin mailto:sage [2008/06/24(火) 19:41:45 ID:7q12wxxB]
- >>247
= と == は違う。 == の前後に空白が必要。 その上で、$HOGE が空文字列の場合にエラーになるのを回避するため。
- 250 名前:login:Penguin mailto:sage [2008/06/24(火) 19:50:56 ID:GHnoP+if]
- >>247 の = は == の typo でしょうw
で、"${HOGE}" == "DQN" だったら $HOGE が未定義でもエラーにならない。 x"$HOGE" == x"DQN" との違いは漏れは知らん。ジジイ仕様の /bin/sh とかが あって "${HOGE}" できない場合があるんじゃない? × export HOGE="DQN" ○ HOGE="DQN"; export HOGE こんな環境もあるぐらいだからなぁ・・・・・・
- 251 名前:login:Penguin mailto:sage [2008/06/24(火) 20:00:18 ID:7q12wxxB]
- >>250
> で、"${HOGE}" == "DQN" だったら $HOGE が未定義でもエラーにならない。 bash はそうだけど、エラーになるシェルもある。 Solaris の /bin/sh とか。
- 252 名前:login:Penguin mailto:sage [2008/06/24(火) 20:07:28 ID:GHnoP+if]
- やはり Solaris かw そんな気はしていた。
普段は Linux 使ってるから必然と bash になっちゃうんだよね。sh で出来たっけ? とか結構記憶が曖昧になってしまって鬱。場合にもよるけど、ポータビリティを 意識してなーんとなく昔ながらの書き方を守ってる漏れ・・・・・ あえて #!/bin/bash って書くべき?w
- 253 名前:login:Penguin mailto:sage [2008/06/25(水) 02:03:39 ID:QRiAgjkv]
- Solarisの古いshなんて無視していいだろ。
POSIX shell (ash, bash, ksh, ...) で動けばいいよ
- 254 名前:login:Penguin mailto:sage [2008/06/25(水) 03:24:07 ID:CH5fnn3k]
- 実際 そんなに拡張されてないし でしょw
#!/bin/bash でいいよね。
- 255 名前:login:Penguin mailto:sage [2008/06/25(水) 03:42:02 ID:r4HiK5gk]
- >>254
スクリプト動かすのに重量級のbashなんか使わないだろ。 #!/bin/sh で十分。
- 256 名前:login:Penguin mailto:sage [2008/06/25(水) 04:07:08 ID:CZiflGY7]
- >>255
先生!うちの環境では file /bin/sh /bin/sh: symbolic link to `bash' です.どうすればいいですか?
- 257 名前:login:Penguin mailto:sage [2008/06/25(水) 04:46:49 ID:N+m64wV+]
- >>255 i486SX/16MHz
- 258 名前:login:Penguin mailto:sage [2008/06/25(水) 04:59:00 ID:CH5fnn3k]
- だから もう 手じかな環境では
/bin/shはないでしょ。 /bin/shと書けばいちおー 互換モードで動くってだけで。
- 259 名前:login:Penguin mailto:sage [2008/06/25(水) 10:58:55 ID:NWVIKvCl]
- FreeBSDの事もあるしshで書いておこうってだけじゃね
- 260 名前:login:Penguin mailto:sage [2008/06/25(水) 11:25:51 ID:r4HiK5gk]
- debian 系だと
$ file /bin/sh /bin/sh: symbolic link to `dash' ~$ ls -l /bin/bash /bin/dash -rwxr-xr-x 1 root root 686K 2008-05-13 03:33 /bin/bash* -rwxr-xr-x 1 root root 79K 2008-03-12 20:22 /bin/dash* サイズが全然違う。
- 261 名前:login:Penguin mailto:sage [2008/06/25(水) 11:46:13 ID:e3mj3BLL]
- 別にどっちかに決める必要なんてない。
portabiltiy が必要なスクリプトは protable に書く。 そうでなければ bash 依存な書き方をしてもいい。 それだけのこと。
- 262 名前:login:Penguin mailto:sage [2008/06/25(水) 12:06:01 ID:foNddTWJ]
- >>256
ぶっちゃけbashはzshよりも遅い。軽量のashなんかとは比べるべくもなく。 ログインシェルとしてなら使い勝手云々ってのがあるけど、 /bin/shをbashにしておくメリットはあんまないよ。
- 263 名前:login:Penguin mailto:sage [2008/06/25(水) 12:36:18 ID:Qkn+OwYP]
- なんかもっともらしいウソが垂れ流されてるぞ。
>>251 >> で、"${HOGE}" == "DQN" だったら $HOGE が未定義でもエラーにならない。 >bash はそうだけど、エラーになるシェルもある。 >Solaris の /bin/sh とか。 solaris ではたしかにエラーになるけど、それは $HOGE が未定義だからではない。 == という演算子自体がないため。 互換性を考えると文字列の比較には == ではなく = を使う。 = なら $HOGE が未定義でもエラーにならない。 x"$HOGE" のようにするのは、$HOGE が -f とか ! のような文字列だったときに 別の意味に解釈されないようにする対策。
- 264 名前:login:Penguin mailto:sage [2008/06/25(水) 17:32:32 ID:PrRjFF/A]
- マジッスカ
ちょっとコンビニで Soliras 買ってくる><
- 265 名前:login:Penguin mailto:sage [2008/06/25(水) 20:22:07 ID:g812rZ0o]
- >>251
Sun4 で試したら、未定義でもエラーにならんかったよ。 $ cat test.sh uname -rvs VAR="VAL" [ "${VAR}" = "VAL" ] && 'true' [ x"${VAR}" = x"VAL" ] && 'true' unset VAR [ "${VAR}" = "VAL" ] && 'true' [ x"${VAR}" = x"VAL" ] && 'true' $ /bin/sh -x test.sh + uname -rvs SunOS 4.1.4-JL 2 VAR=VAL + [ VAL = VAL ] + true + [ xVAL = xVAL ] + true + unset VAR + [ = VAL ] + [ x = xVAL ]
- 266 名前:login:Penguin mailto:sage [2008/06/26(木) 15:09:48 ID:ZojLTS6b]
- お邪魔します。
シェルスクリプトを走らせて、あるシェルスクリプトを起動させるようにするにはどういう書き方したらよいですか。 また、そのシェルスクリプトを走らせた結果を変数にぶちゅっと入れる書き方はどうしたらいいですか。
- 267 名前:login:Penguin mailto:sage [2008/06/26(木) 15:35:52 ID:ZojLTS6b]
- 事故解決しますた。すいません。
- 268 名前:login:Penguin mailto:sage [2008/06/26(木) 22:18:06 ID:ZPxwXTvf]
- ぶちゅっ
- 269 名前:login:Penguin [2008/06/28(土) 20:17:43 ID:/ZK60QF9]
- シェルでエロゲをつくるためにはどうしたらいいですか
- 270 名前:login:Penguin mailto:sage [2008/06/28(土) 21:21:44 ID:MDU5A1fa]
- エロゲって何ですか
- 271 名前:login:Penguin [2008/06/28(土) 22:52:16 ID:/ZK60QF9]
- linuxがwindowsに唯一負けてるのがエロゲです
- 272 名前:login:Penguin mailto:sage [2008/06/28(土) 23:29:11 ID:fs03Gty7]
- だとすれば、sh スクリプトでなく、BAT ファイルで作ると良いのではないでしょうか
- 273 名前:login:Penguin [2008/06/28(土) 23:48:10 ID:ZJYzC1iZ]
- windowsに対抗するため、Linuxにエロゲを導入します
また、複数のplayerがエロゲサーバにtelnetしてplayすることを想定としているため GUIではなくCUIで行いたいと思っています
- 274 名前:login:Penguin mailto:sage [2008/06/29(日) 00:53:49 ID:nwf205tS]
- >>273
CUIでいかにエロさを出すかが問題だ 絵もない本当のノベルゲームでいいっていうなら、 ひたすらechoとifとかwhileとかcaseを駆使すればできる気がするけど 今どきtelnetってのもツッコミどころだけどな
- 275 名前:login:Penguin mailto:sage [2008/06/29(日) 01:02:35 ID:wXyVSJIl]
- Nethackはエロゲ
異論は認める
- 276 名前:login:Penguin mailto:sage [2008/06/29(日) 01:16:19 ID:4XAvfgBl]
- NetHackを2ch-AA拡張すればエロくなる。
主人公:( 'A`) ヒロイン:J( 'ー`)し てな具合。そんでもって濡れ場ではフルスクリーンAAでアニメーションするの。
- 277 名前:login:Penguin mailto:sage [2008/06/29(日) 02:09:45 ID:O4g3tYWz]
- エロゲの話はこっちで。
Linuxで動くオープンソースエロゲを作ろう!2 pc11.2ch.net/test/read.cgi/linux/1178690729/
- 278 名前:login:Penguin mailto:sage [2008/06/30(月) 18:35:41 ID:Y3MWGahT]
- Linux + Darwin Streaming Server で自分専用の放送局を何チャンネルも建てて
どこでも自分のコレクションした音楽を聞けるようにして楽しんでいるのですが、 面倒くさいのは、メタファイルを用意せねばならない点。 例えばマイケル・ジャクソンだけを集めた専門局を作るとします。これを 1). www.example.com/michael.pls 2). www.example.com/michael.m3u などといったメタファイルに、以下のような内容を記述しておいてやらねばなりません。 1). [playlist] File1=www.example.com:8000/michael Title1=nina Length1=-1 NumberOfEntries=1 Version=2 2). www.example.com:8000/michael ま、大した量じゃないので、今まではいちいち手作業で cp して vi で編集していたのですが、 これを、例えば $ mkpls michael などと言った変数 $streaming_name を与えれば、 自動的にファイル内の特定の部分も書き換えて、 かつ、.pls .m3u それぞれのストリーミング用メタファイルも まとめて生成してくれるようなスクリプトがあれば便利なのに、 と思っているのですが、どう書けばいいのかサッパリ解りません。 基本は、単に変数を含んだひな形を用意し、ひな形を複製、与えられた変数を代入して、 変数の名前+拡張子で保存、というだけのことだと思うんですが。。。。orz
- 279 名前:login:Penguin [2008/06/30(月) 22:16:41 ID:mYyaCshH]
- 超入門者です。下記内容のシェルを作成しなければならないのですが、参考書を見てもよく分からず
知り合いにも分かる人間がおりません。。ごめんなさい、どなたかご教授頂けないでしょうか? ・/var/log/mailを解析して特定のユーザに関する調査を実施して結果をファイル出力する。 (条件) ・スクリプトの実行形式は「スクリプト名 ログファイル名 メールアドレス」 ・受信メール数と送信メール数を集計する。 ・調査をするユーザは引数として与える。 ・調査をするユーザはtest@toyo.co.jp どのような記述にすれば良いのか、参考となる情報を何でも構いませんのでお願いいたしますm(__)m
- 280 名前:login:Penguin mailto:sage [2008/06/30(月) 22:19:25 ID:LfTOpvVG]
- >>279
grep $2 $1 | wc -l さっさと学校辞めて派遣労働者にでもなってしまえ。 その方が親孝行だ。
- 281 名前:login:Penguin mailto:sage [2008/06/30(月) 22:51:24 ID:LE+io00E]
- シェルからwindowsにrshのような感じでコマンドを打ちたいんですが、
telnetを使ったりしてどうにかならんでしょうか?
- 282 名前:login:Penguin mailto:sage [2008/06/30(月) 22:51:47 ID:LfTOpvVG]
- >>281
expect
- 283 名前:login:Penguin mailto:sage [2008/06/30(月) 22:55:37 ID:pVpnujlR]
- >>279
スクリプト以前にひょっとしてシェルプロンプトで何も叩いた事がないほど初心者?
- 284 名前:login:Penguin [2008/06/30(月) 23:08:10 ID:mYyaCshH]
- 279です。
>>280 その言葉真摯に受け止めます。ですが今後努力する所存です。 すいません。諸事情で時間がない中でしたのでこちらで質問させて頂きました。 参考情報ありがとうございます。 >>283 簡単なコマンドなら叩いたことはありますがシェルは全くの初心者です。 どうか宜しくお願い致しますm(__)m
- 285 名前:login:Penguin mailto:sage [2008/06/30(月) 23:13:41 ID:LE+io00E]
- >>282
家のfedoraでインストールして試してみてexpectすげーと思ったけど、業務用のredhat 3 には多分入ってないです・・・ ありがたいですけど、他にないですか?
- 286 名前:login:Penguin mailto:sage [2008/06/30(月) 23:35:01 ID:EeC8VQhU]
- >>285
Expect.pmとかopen3.rbとか・・・ 最悪openptyで相当品を書けばいい。tccで書けばそれでもスクリプト。
- 287 名前:login:Penguin mailto:sage [2008/06/30(月) 23:41:54 ID:pVpnujlR]
- >>284
それじゃまずgrepを使ってあるユーザーの受信メールの行と送信メールをどうやったら切り出せるか 試行錯誤し、それが出来たらwc。 ひっかかったらgrepのmanページでまず回答を探す努力を。 awkとかのほうが色々柔軟性があるけどたぶん使った事無いでしょう。 あと>>3のリンク先をいくつかながめるといいと思う。
- 288 名前:login:Penguin [2008/06/30(月) 23:48:15 ID:hskJhfYi]
- 初心者です。お願いします。
cutコマンドはファイルのみ使えますか? 変数にも使えるでしょうか。 変数に格納してある文字列からcut.grepを使いたいんですが。
- 289 名前:login:Penguin mailto:sage [2008/06/30(月) 23:49:01 ID:mYyaCshH]
- >>287
ご教示いただいた方法にて調べてみます。本当にありがとうございますm(__)m
- 290 名前:login:Penguin mailto:sage [2008/06/30(月) 23:54:15 ID:LE+io00E]
- >>286
それらはアプリでしょうか? インストールが必要なのはNGなんです。 標準的なコマンドで実装できれば・・
- 291 名前:login:Penguin mailto:sage [2008/07/01(火) 00:23:35 ID:7AvBIvdb]
- >>278
plsとm3uは多くのプレイヤーが使ってる形式のようですから お使いのプレイヤーにその機能がないか確認してはいかがでしょう。 プレイヤーをお使いでないならこういうものもあります。 ttp://freshmeat.net/projects/fapg/ ビルドにuriparserを求められますがconfigureに--disable-xspfを つけると要らなくなります。
- 292 名前:login:Penguin mailto:sage [2008/07/01(火) 00:37:40 ID:F/ZP/0+B]
- >>278
外してるかもしれないのですがこれだけで十分ですかね #!/bin/sh streaming_name=$1 cat <<END >$streaming_name.pls [playlist] File1=www.example.com:8000/$streaming_name Title1=nina Length1=-1 NumberOfEntries=1 Version=2 END cat <<END >$streaming_name.m3u www.example.com:8000/$streaming_name END
- 293 名前:login:Penguin mailto:sage [2008/07/01(火) 01:20:48 ID:DL3owd7E]
- >>288
$echo 1111 bbbbbb | cut -f1 -d ' ' で1111と表示できるからcutにパイプして echo $var | cut -fx で出来る 変数にファイル名を入れてる場合なら cut -fx < $filename でおk あとはエスパーじゃないんで分からん
- 294 名前:login:Penguin mailto:sage [2008/07/01(火) 07:30:47 ID:/iSyGj3E]
- >>288
echoしてリダイレクト。基本。
- 295 名前:login:Penguin [2008/07/01(火) 10:01:29 ID:ckhBGtgF]
- 質問です。
変数の中に=があったらそれまでの文字を出力したいんですが、 例)$1に abc=defg -> abcのみ出力 $2に abcdefgh -> 何もせず こういった場合、abcを取り出す(=の前までCUT?)事はできますか? if(( grep '=' $1 )) then cut〜 みたいになるんでしょうか。お願いします。
- 296 名前:login:Penguin mailto:sage [2008/07/01(火) 10:12:23 ID:wSJ46Tmn]
- >>295
case "$1" in *"="*) echo "$1" | sed 's/=.*//' ;; esac
- 297 名前:login:Penguin mailto:sage [2008/07/01(火) 10:25:43 ID:sgtpdcHD]
- bashで
x=$1 p=${x%=*} [ $x = $p ] || echo $p
- 298 名前:login:Penguin [2008/07/01(火) 10:28:44 ID:ckhBGtgF]
- >>296
即レス有難うございます!お陰様で出来ました^^
- 299 名前:login:Penguin mailto:sage [2008/07/01(火) 10:37:02 ID:wSJ46Tmn]
- >>297
それだと $1 が「/tm*/=xx」とかのときうまくいかない。
- 300 名前:login:Penguin mailto:sage [2008/07/01(火) 10:58:55 ID:HD46/kcy]
- >>295
>(=の前までCUT?) >>296 で sed の例が出てるけど cut -d "=" -f 1 とか awk -F "=" '{print $1}' とかでもできる。
- 301 名前:login:Penguin [2008/07/01(火) 11:57:13 ID:ckhBGtgF]
- >>296,>>297,>>300の皆さん有難うございます!
- 302 名前:login:Penguin [2008/07/01(火) 12:12:55 ID:ckhBGtgF]
- すみません、力を貸して下さい。
今やらなければならないのが、lsuser ALL を叩いて、 出力結果を見出し付で出力する(体裁を整える)です。 現在見出しの部分でつまずいています。 bin id=2 pgrp=bin groups=bin,sys,adm home=/bin guest id=100 pgrp=usr groups=usr home=/home/guest などを user_name id pgrp groups bin 2 bin bin,sys,adm guest 100 usr usr と言った感じです。=の前後でCUTし、前部分を見出しに、 後部分を見出しの下に出したいです。難しいのが、既に見出しにidがあるのに また見出しにidが追加されてしまうんです。 どなたかサンプルを作っていただく、またはアドバイスを頂けますでしょうか。 よろしくお願いします。長文・乱文すいません。
- 303 名前:login:Penguin mailto:sage [2008/07/01(火) 12:33:08 ID:wSJ46Tmn]
- >>302
perl か何かで書いた方が早いと思う。
- 304 名前:login:Penguin [2008/07/01(火) 12:44:02 ID:ckhBGtgF]
- >>302
アドバイス有難うございます。調べてみます! 書き忘れたんですが、KORNシェルです。
- 305 名前:login:Penguin mailto:sage [2008/07/01(火) 12:46:37 ID:EG1sJMbp]
- 実用的な答が欲しいならもう少し環境を書くべきだ.
bash,sed,awk,perlなどが使えるのかどうかとか. それともシェルだけでアクロバティックにこなしたいのか?
- 306 名前:login:Penguin mailto:sage [2008/07/01(火) 12:50:08 ID:wSJ46Tmn]
- そもそも使ってる OS は何よ。
- 307 名前:login:Penguin mailto:sage [2008/07/01(火) 13:03:02 ID:Arg2/vlJ]
- >>292
ありがとうございます。バッチリでした。 いやー楽になった。っていうか勉強になりました。 みなさん、どういうところで構文を学んでいらっしゃるんでしょう? この手のことについては完全に無学なもので、 どこからどう手をつけていいやら分かりません。
- 308 名前:login:Penguin mailto:sage [2008/07/01(火) 13:21:36 ID:wSJ46Tmn]
- >>307
テンプレくらい読め。
- 309 名前:login:Penguin [2008/07/01(火) 13:31:41 ID:ckhBGtgF]
- 302です。環境はUNIX AIXです。そしてKORNシェルです。
- 310 名前:login:Penguin mailto:sage [2008/07/01(火) 13:39:10 ID:wSJ46Tmn]
- >>309
なら板違い。
- 311 名前:login:Penguin mailto:sage [2008/07/01(火) 13:42:53 ID:F/ZP/0+B]
- IFSに=を加えて行ごとにsetすると簡単
- 312 名前:login:Penguin [2008/07/01(火) 13:48:38 ID:ckhBGtgF]
- >>310さん すいません板違いでしたか。移動します。
>>311さん やってみます。有難うございます。
- 313 名前:login:Penguin mailto:sage [2008/07/01(火) 17:29:52 ID:0HA3LMf0]
- 今日の宿題スレッドはここですか?
- 314 名前:login:Penguin mailto:sage [2008/07/01(火) 20:13:34 ID:sk7tfsLb]
- >>309
そういえばIBMのTivoli agent for Linuxをインスコしようとしたら インストーラーがkshを必要としやがった。
- 315 名前:login:Penguin mailto:sage [2008/07/02(水) 07:58:38 ID:kAlrwjxr]
- >>302
俺には難しかった・・orz 誰か見本よろ
- 316 名前:login:Penguin mailto:sage [2008/07/02(水) 11:59:47 ID:t4E6Zbe3]
- >>302
#!/bin/sh st=true while read s do rctop=null rc=null for n in $s ;do if [ $st = true -a "$rctop" = "null" ] ;then rctop=user_name fi if [ "$rc" = "null" ] ;then rc=$n else if [ $st = true ] ;then rctopadd=`echo -n $n | cut -d '=' -f 1` rctop=`echo $rctop $rctopadd` fi rcadd=`echo -n $n | cut -d '=' -f 2` rc=`echo $rc $rcadd` fi done if [ $st = true ] ;then echo $rctop st=false fi echo $rc done $./shellscript.sh < n.data 理想の動作じゃないだろうが フォーマットをこっちが指定するやり方として…あとは整形の仕方だな
- 317 名前:login:Penguin mailto:sage [2008/07/02(水) 12:18:34 ID:15uy4jBz]
- >>312 で移動するって言ってるんだから
もうここで言ってもしょうがないんでは。
- 318 名前:login:Penguin mailto:sage [2008/07/02(水) 13:02:11 ID:t4E6Zbe3]
- ('A`)スマソ
- 319 名前:login:Penguin [2008/07/02(水) 15:26:35 ID:BlTL/xTh]
- >>316>>317>>318
どこに行っていいかわからなくて、ちょくちょく覗いてましたw >>316を参考にしたら、思ったとおりの動きをしてくれました。 本当に有難いっす。
- 320 名前:login:Penguin mailto:sage [2008/07/02(水) 15:29:18 ID:15uy4jBz]
- さっさと消えろ。
シェルスクリプト総合 その11 pc11.2ch.net/test/read.cgi/unix/1211284684/
- 321 名前:login:Penguin mailto:sage [2008/07/02(水) 18:57:00 ID:iGIzjxTr]
- 質問です。
たとえば、 cat test 1 2 3 4 5 と表示されるシェルスクリプトがあったとして、それを 5 4 3 2 1 と表示させるにはどうしたらいいでしょうか?
- 322 名前:login:Penguin mailto:sage [2008/07/02(水) 18:59:10 ID:15uy4jBz]
- >>321
tac test
- 323 名前:login:Penguin mailto:sage [2008/07/02(水) 19:12:45 ID:iGIzjxTr]
- >>322
即答ありがとうございますっ
- 324 名前:login:Penguin mailto:sage [2008/07/02(水) 23:09:21 ID:tYZaCcmU]
- >>322
しっ、知らなかった... なんつー冗談ネーミング。 いつからあるの? 発祥はgnuかな。 Wikipediaにも 載ってない。
- 325 名前:login:Penguin mailto:sage [2008/07/02(水) 23:11:36 ID:tYZaCcmU]
- >>324
あ、あったわ。 tac(Unix)であった。
- 326 名前:login:Penguin mailto:sage [2008/07/03(木) 07:56:36 ID:HJXPhQch]
- Terrible-monster Attacking Crew
- 327 名前:login:Penguin mailto:sage [2008/07/04(金) 00:23:17 ID:Z8+RYNGO]
- cat tac
most more less head tail cut paste pgp gpg mail nail 言葉遊び系のコマンドペアって案外少ないんだな。
- 328 名前:login:Penguin mailto:sage [2008/07/04(金) 01:21:52 ID:7gcupJvt]
- if fi case esac
#ここはコマンド以前にシェルスクリプト スレだよな
- 329 名前:login:Penguin mailto:sage [2008/07/04(金) 01:24:49 ID:9pO2naUI]
- esac にはびっくりしたなーもー
- 330 名前:login:Penguin mailto:sage [2008/07/04(金) 05:28:59 ID:AeTu0vqB]
- 逆文字でネストを表現するのはお手本となる言語があった気がする
- 331 名前:login:Penguin [2008/07/04(金) 08:23:27 ID:jR7hqKfT]
- プロセスをkillするシェルを作成しましたが、そのシェルそのものも引っかかってしまいます。
下記を実行すると、test のプロセスはKillされますが、 ./kill_test.sh: line 6: kill: (17914) - No such process と、エラーが出ちゃいます。 どのようにすれば、そのシェルそのものを検知しなくできますでしょうか。 例えば、test というプロセスをKillするプログラム #!/bin/bash # kill_test.sh ID=ps axo pid,cmd | grep test | awk '{print $1}'` if [ -n "$ID" ]; then kill $ID fi 実行結果 test のプロセスはKillされますが、エラーも出る ./kill_test.sh: line 6: kill: (17914) - No such process
- 332 名前:login:Penguin mailto:sage [2008/07/04(金) 08:32:51 ID:dZZeWoZr]
- >>331
pkill test
- 333 名前:login:Penguin mailto:sage [2008/07/04(金) 08:55:04 ID:jR7hqKfT]
- ありがとうございます。
プロセスはKillされますが こんどは Terminated と出ちゃいますが... #!/bin/bash # kill_test.sh pkill test
- 334 名前:login:Penguin mailto:sage [2008/07/04(金) 16:17:24 ID:8eslOrWY]
- >>331
grep -v $$ とかやって シェルスクリプトの pid を除く。 grep -v grep とか grep [t]est とかやって grep の pid を除く。
- 335 名前:login:Penguin mailto:sage [2008/07/04(金) 23:59:25 ID:/fP/UZlP]
- most なんて初めて知ったよ。
ttp://www.jedsoft.org/most/
- 336 名前:login:Penguin mailto:sage [2008/07/05(土) 05:45:46 ID:zldIi++e]
- >>335
同じく support multiple windowsの意味がわからんwww
- 337 名前:331 mailto:sage [2008/07/05(土) 08:21:10 ID:f1ZF3ker]
-
ps axo pid,cmd | grep test| grep -v ' grep' | awk '{print $1}' で、できました。 m(._.*)mペコッ pkill 知りませんでした。pgrepも知ることができ感謝です
|

|