|
>>2564 スナフキン > ん〜ちょっと調べてみると、どうもLinux系だけみたいだなぁ・・・ こういう一般的な用途のコマンド (ファイルを読んでコード変換するだけ) で、 なおかつソースが公開されているものは、よっぽどのことがない限り Linux 専用ということはありません。 FreeBSD の port/package にもありますし、NetBSD の package には含まれて ないようですがコンパイルすれば使えるでしょう。まぁ、それを言い出したら 多分 Windows でも Mac でも使えそうな気がしますが。 >>2563 小僧 そういえば最初にここを紹介すべきでした。 http://www.jp.FreeBSD.org/QandA/HTML/1254.html >>2566 小僧 > 自動で"_"に変換されるようですが、この"_"を他の文字に > 変更する事は可能なのでしょうか? 多分できないです。できたとしても、その環境の iconv のみの独自拡張でしょう。 こういうのは考え方を変えて、 % sed 's/&/&/g' | sed 's/_/&ubar;/g' | iconv -f shift_jis -t euc-jp | \ sed 's/_/\*/g' | sed 's/&ubar;/_/g' | sed 's/&/&/g' などとファイル中の _ を別の文字に置換してから iconv を通せば なんとでもできます。 # &ubar; というのは、いま適当に考えた実体参照で、本当は存在しません。 >>2560 Moo >>2561 へんきち >>2565 sisya どもども。できれば改善すればよい点も書いていただけると嬉しいです。 # と言っても、時間がなくて対応できない可能性が大なんですが。 |
|
お世話になっております。 シェルスクリプトが上手く動作せず困っています。 行っている方法は、 Linux7.1J sendmail-8.11.2-14 procmail-3.21-0.71で ユーザ"XYZ"のホームディレクトリに.procmailrcファイルを置き、 XYZ宛てのメール受信時に条件が合えばシェルスクリプト"ABC"を 実行するようにしています。 メール受信時に条件が合い、シェルスクリプトを実行するところまでは 上手くできたのですが、実行するシェルスクリプトの中の一部分のみ 動作しません。 その部分とはユーザ"mono"に切り替え、さらにシェルスクリプトを実行する以下です。 su - mono -s /home/mono/mno.sh ---(1) ※ユーザ"mono"はパスワードなしです。 ((なお、mno.shの記述は scp /var/XYZ/123.txt abc.world.co.jp:/home/mono/123.txt ssh abc.world.co.jp sh /home/mono/mno2.sh です。 他のLinuxサーバabc.world.co.jpへsshでファイルをコピーし、 他のサーバのシェルスクリプトmno2.shを実行)) (1)の部分に対してエラーでは、 standard in must be a tty と表示されます。 他のサーバではこの記述通りで動作しました。 また、メール受信時にシェルスクリプト"ABC"を実行するユーザ"XYZ" で手動でシェルスクリプトを実行すると(1)の部分も動作します。 Webで調べたところ、同じような現象になっている例もありましたが 解決策がありません。 そしてエラーの意味がよくわかりません。 勝手な推測ですが、実行しているサーバではセキュリティが強いため パスワードなしとしている"mono"ユーザが原因ではないかと思います。 ですが、シェルスクリプトでパスワードも記述した形での"su"の実行は 可能かどうか分かりません。 申し訳ありませんが、何かよい策をお教えください。 |
|
タブ区切りテキストを split /\t/ で切って各フィールドを変数に読み込み、 join "\t" で戻そうとすると、 場合によってはデータが抜けていることがあるので困ります。 タブ区切りデータを a, b, c, d、タブを->であらわすと、 split /\t/, "a->b->c->d" => (a,b,c,d) split /\t/, "a->->c->d" => (a,c,d) split /\t/, "a->b->->d" => (a,b,d) split /\t/, "a->->->d" => (a,d) split /\t/, "a->b->->" => (a,d) ということで、 1 while $str =~ s/\t\t/\t♪\t/; @list = split /\t/, $str; for (@list) { s/♪//; # $_ は @list の要素を参照する。♪がデータにないと仮定 } とかやってるんですが、いかにもダサいですね。 もっと常道はあるんでしょうか? Excel で編集すると a->b->->\n が a->b\r\n となってしまうのも 困る。 |
|
<A href="javascript:x(1)">1</A> をクリックすると最終的に Nの値(abcの所)を計算し document.location.href="http://www.a/cgi/a.cgi?N=abc"; としていたのですが、不便な所を感じ変えたいと思っています。 Submitボタンを押したらNを計算し <FORM name="f" method="post" onSubmit="if(x() != true) {return false}" action="a.cgi"> <INPUT type=hidden name=N value=abc> としてa.cgiを起動する方法は知っているのですが、 上のものと組み合わせた感じで <A href="javascript:x(1)">1</A>をクリックして 最終的にNを計算し <INPUT type=hidden name=N value=abc> のようにpost/getで起動する方法はないでしょうか? 自分なりにやってみてもよくわからないのです。 どなたか教えて下さい。 お願いします。 ちなみに初心者です。難しいことは解らないので細かく教えていただくと 助かります。 |
|
>>2570 q19_77 > standard in must be a tty su は端末 (tty) からのパスワード入力を求めているのに、 端末がないよ、という意味です。 端末というのは、キーボードで入力ができて、文字が表示されるもの、 たとえば kterm がそれです。procmail 経由で実行されると端末が 割り当てられないので (キーボードもないし、出力する画面もない) エラーになっているわけです。 > 他のサーバではこの記述通りで動作しました。 本当ですか? どうして root でもないのに、パスワードなしで su で他ユーザになれるのですか? > su - mono -s /home/mono/mno.sh 気になる点は2つ。 なぜ -c でなく -s なのでしょうか? http://www.linux.or.jp/JM/html/GNU_sh-utils/man1/su.1.html によると、-s はシェルを実行するオプションですから、-s の場合端末が あることをチェックしているのかもしれません。 あるいは環境変数 TERM などがセットされているので、端末を見にいってしまう という可能性も考えられます。 ちなみに FreeBSD 4.4-RELEASE では、端末がない状態で (cron 経由) echo PASSWORD | su root -c /usr/bin/id でプログラムの実行ができました。 >>2571 ふくし > 場合によってはデータが抜けていることがあるので困ります。 そんなことはないと思いますが、perl のバージョンは何ですか? perl-5.005_03 ではそのような挙動を示しませんでした。 |
|
>>2573 68user さん: えっと、 split /\t/, "a->b->c->d" => (a,b,c,d) split /\t/, "a->->c->d" => (a,'',c,d) split /\t/, "a->b->->d" => (a,b,'',d) split /\t/, "a->->->d" => (a,'','',d) split /\t/, "a->b->->" => (a,b,'','') となってくれる、ということですか? あれーおかしいなー、、。 実は、下の♪を使ったコードが動いたのでロクな検証をしてないのでした。 勝手な思い込みで外していたら申し訳ありません。 Excel による末尾のタブの削除等の現象かな? うーんうーん。 |