• 締切済み

スクリプト:LinuxでOK, CygwinでNG

はまってしまったため、皆様にお助けいただきたく、お伺いいたします。 手元に発生時の情報がなく、エラーメッセージ等記載できず記憶に頼ってしまい、申し訳ありません。ちょっと急いでおりますため、情報不足承知ですが質問させていただきます。(エラーメッセージ等不足分は後に追記させていただきます). ImageMagick-6.7.4-7 の次のコードを実行すると、正常に実行できる場合とできない場合があります。 ./ImageMagick-6.7.4-7/convert.exe tmp.png -matte -virtual-pixel transparent -distort Perspective '0 0 0 0 0 360 0 360 360 0 360 0 360 360 360 250' tmp.png 1. shell で直接入力 Linux, Cygwin ..... OK 2. run.sh にコードを作成し sh ./run.sh で実行 Linux ...... OK Cygwin ..... NG ( ' に不正文字のエラーが出ます ) 3. Python2.6 から cmd = """convert tmp.png -matte -virtual-pixel transparent -distort Perspective '0 0 0 0 0 360 0 360 360 0 360 0 360 360 360 250' tmp.png""" os.popen(cmd).read() で実行 Linux ...... OK Cygwin ..... NG ( エラーメッセージは出ないですが、処理に失敗している. おそらく上記と同じ理由 ) 今まで Linux で処理を行っており、Cygwin にポーティングしようとしたら発生した問題です。 ['] の扱いについて基本的なことを理解していないのかもしれません。 ご存知の方おられましたらよろしくお願いいたします。

みんなの回答

  • notnot
  • ベストアンサー率47% (4851/10265)
回答No.3

エラーメッセージ無しで推測するとすると、スクリプトファイルの改行コードがおかしいとかですかね。 Windowsのメモ帳とかで作ってしまって、LF じゃなくて CRLF になってしまっているとか。 tr -d '\15' < infile > outfile でCRを削除出来ます。

jsbach_2005
質問者

お礼

遅くなりました申し訳ありません。 いろいろとやってみました。結局解決できず、別のマシンを使うことで回避しました。 そのマシンとの相違点は 1. Cygwin がインストールされている(エラーが発生する)、Cygwin がない(正常に動作する) という点のみです。ターミナルやコマンドプロンプトの設定が起因している問題かもしれませんが、今回は時間がなかったため深入りは避けました。 Cygwin / Linux 間のポーティングでは簡単なものでもある程度時間的余裕を見ておく必要があると痛感しました。 どうもありがとうございました。

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.2

> Perspective '0 略 を Perspective "0 略 ――のように、引用符から二重引用符に変えてみるとか。

jsbach_2005
質問者

お礼

返信が遅くなりまして、申し訳ありません。 アドバイスいただいたことは、試しましたが結果変わらず、でした。 今はターミナル/コマンドプロンプト設定を見直しております。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

手許のCygwinでは普通にできましたが。 やはり、エラーメッセージを正確に読まないとわかりません

jsbach_2005
質問者

補足

ありがとうございます。現場からは投稿できませんので、レスが遅くなりました。 エラーメッセージです。 2 run.sh にコードを作成し sh ./run.sh で実行 のエラーメッセージは次になります。 --- ': Invalid argument @ error/blob.c/OpenBlob/2589. ' @ error/png.c/MagickPNGErrorHandler/1728. --- Cygwin の version です。 $uname -a 1.7.9(0.237/5/3)

関連するQ&A

  • cygwinシェルスクリプト内でのエイリアス

    cygwinのterminal上で alias abc=ls abc とやるとlsを実行したことになるのですが、 内容が #!/bin/bash alias abc=ls abc のa.shというシェルを作り実行すると、 ./a.sh: line 3: abc: コマンドが見つかりません というエラーが出て実行してくれません。 解決策が分かる方よろしくお願いします。

  • Cygwinのlsコマンドについて

    Cygwinの場合、以下のオプションでlsコマンドを実行すると $ ls --full-time -rwxr-xr-x 1 aaaa なし 139 2006-08-23 15:01:34.203125000 +0900 ls.sh と表示されます。 Linux(redhat)上で同様のコマンドを実行すると、 $ ls --full-time -rwxr-x--- 6 root root 4096 Wed Aug 09 16:59:03 2005 ls.sh と表示されます。 タイムスタンプの表示形式が異なっていますが、 Cygwin上で、Linuxのような表記をしたいのですが、 可能でしょうか。ご教授お願い致します。

  • 「ウィルスセキュリティーZERO」と「Cygwin」

    CygwinというWindows上でLinux環境が使えるフリーソフトがあるのですが、 ウィルスセキュリティーZEROをインストールしたところ Cygwinの「startxwin.sh」というコマンドで「dumping state」というエラーが発生してしまいました。 この問題が解決できる方いらっしゃいますでしょうか?

  • Linuxでシェルスクリプトがフルパスだと実行できない

    Linuxでシェルスクリプトがフルパスだと実行できない こんにちは 現在linuxでシェルスクリプトを記載していて、やっと出来た!と思ったら、なぜかフルパスで実行すると失敗します。 中身は例えば #!bin/sh echo "hello" とし、ファイル名をtest.shとします。 実行時にカレントからだと上手くいきます。 ./test.sh ただし、フルパスで実行するとうまくいきません。 ./home/user/test.sh エラーは以下 bash: ./home/dv3/tet.sh:No such file or directory 所有者はrootでグループもrootにしてあります。 シェルの権限は755にして、rootで実行しています。 なぜカレントだと上手くいき、フルパスだと上手くいかないのでしょうか? パスが必要なコマンドも入っていないのに。。。 どなたかご教授いただけると幸いです。 宜しくお願い致します。

  • Linuxで世代管理されている/etc/tmpというファイル名のものが

    Linuxで世代管理されている/etc/tmpというファイル名のものがあり、とあるshを実行すると、最も大きい数字がついたtmpというファイルを削除したい。 例) tmp.txt tmp1.txt tmp2.txt tmp3.txt の中ではtmp3.txtを削除したい。

  • コマンドプロンプトのファイル指定

    ImageMagick初心者です。 ImageMagickという画像変換ソフトを使って「BMP画像」を「4bit グレースケールPNG画像」に変換しようとと思っています。 変換する際に、コマンドプロンプトでコマンドを入力して、変換対象のファイルを指定しようとしたのですが、ファイル名に半角スペースが含まれていて、正しく実行できません。 変換対象:「Tombo village.bmp」 出力対象:「Test.png」 ファイル名を変更する以外に変換する方法はないでしょうか? あと、ImageMagickで一度の操作で大量のファイルを変換するようなコマンドってありますか? 誰か教えてください! ■コマンドプロンプト実行結果■ C:\Users\[User Name]\Pictures\Folder>convert -colorspace gray -depth 4 Tombo village.bmp Test.png convert.exe: unable to open image `Tombo': No such file or directory @ error/blob.c/OpenBlob/2641. convert.exe: no decode delegate for this image format `Tombo' @ error/constitute.c/ReadImage/550. convert.exe: unable to open image `village': No such file or directory @ error/blob.c/OpenBlob/2641. convert.exe: no decode delegate for this image format `village' @ error/constitute.c/ReadImage/550. convert.exe: unable to open image `letters.bmp': No such file or directory @ error/blob.c/OpenBlob/2641. convert.exe: no images defined `Test.png' @ error/convert.c/ConvertImageCommand/3068. -------------------------となります。

  • pngからepsへの変換

    画像を変換したいのですがうまいこと変換できませんでした。 やってみた方法は、LINUX環境でコマンドconvertを使用したものです。 convert in_put.png out_put.epsと書きました。エラーも出ずに実行できたので、一応確認してみたのですが画像に変換されず、文字がずらっと並んだものしか出てきませんでした。 windows環境で使用したいので、LINUXで変換しないといけないというわけではありません。 よろしくお願いします。

  • cygwin でX起動せず

    cygwinをインストールしたのですが、Xが起動できません setup.exeのversionは 2.510.2.2です。 tartwin.shを実行すると、以下のようなエラーが出力されています。 ----- ここから ----------------------- (WW) /tmp mounted int textmode _XSERVTransmkdir: ERROR: euid != 0,directory /tmp/.X11-unix will not be created. (II) XF86Config is not supported (II) See http://x.cygwin.com/docs/faq/cygwin-x-faq.html for more information winAdjustVideoModeShadowGDI - Using Windows display depth of 32 bits per pixel winAllocateFBShadowGDI - Creating DIB with width: 1280 height: 1024 depth: 32 winInitVisualsShadowGDI - Masks 00ff0000 0000ff00 000000ff BPRGB 8 d 24 bpp 32 (中略) MIT-SHM extension disabled due to lack of kernel support XFree86-Bigfont extension local-client optimization disabled due to lack of shared memory support in the kernel (--) Setting autorepeat to delay=500, rate=31 (II) Loading US keyboard layout. (--) winConfigKeyboard - Layout: "E0010411" (00000411) (--) Using preset keyboard for "Japanese" (411), type "7" (--) 3 mouse buttons found Could not init font path element /usr/X11R6/lib/X11/fonts/CID/, removing from list! ----- ここまで ------ could not init font path elemtnt /usr/X11R6/lib/X11/fotns/CID, removing from list! の部分が怪しいと思うのですが、この場合、何かインストールすべきパッケージを取りこぼしているのでしょうか? cygwinのインストール、設定については、以下を参考にしました。 http://www.atmarkit.co.jp/flinux/special/cygwin2/cygwin01a.html よろしくお願いします。

  • ImageMagickのみでRGB->インデックス画像を作る方法は?

    ImageMagick 6.4.0 をLinux(fedora10)で使用しています。 「ImageMagickツールのみを使用」して、 「ファイル拡張子を変えずに」RGBモードの画像(例:png)をインデックスモードに変更する方法を実現しているかたが居ましたら、 その方法を教えていただきたいと思います。 たとえば以下の例は、何れも簡単に RGBモード -> インデックスモードになりますが、 上記の前提条件から外れています。 ファイル拡張子を変えている例 convert rgb_img.png index_img.png8 他のツールとしてGIMPを使っている例 rgb_img.png をGIMPで開いて「画像」->「モード」->「インデックス」にしてファイル保存(index_img.png)する。 ---------- ImageMagickのコマンドやパラメータだけで処理したいので、ご教授のほどよろしくお願いします。 「ImageMagickでは不可能」という結果でも構いません。 なお、-channel や -alpha なども試しましたが、ImageMagickでは出力するファイル拡張子によってデフォルトのモードが設定されてしまう気がしています。(たとえば png ならRGBモードになってしまう) http://www.imagemagick.org/script/command-line-options.php

  • Linuxのbashシェルスクリプトについて教えて下さい。

     Linux, bash超初心者です。  WindowsのAdobe Readerで印刷できないPDFを印刷しようと、Vine Linux上でpdf2psとps2pdfを組み合わせ、以下のようなスクリプトを作ってみました。 [pdfconv.sh] ----- #!/bin/sh if [$1 = ""]; then echo "Usage: ./pdfconv.sh input.pdf [output.pdf]" else file1=$1 file2=${file1%pdf}ps if [$2 != ""]; then file3=$2 else file3=${file1%.pdf}2.ps fi echo $file1' -> '$file3 pdf2ps -r1200x1200 ${file1} ps2pdf $file2 $file3 rm $file2 fi -----  引数が渡されていないとUsageを表示するようにしてみたのですが、引数を渡して $ ./pdfconv.sh test.pdf として実行すると、 ./pdfconv.sh: line 3: [test.pdf: command not found とのエラーが表示されてしまいます。処理自体には問題ないのですが、何だか気持ち悪いです。解決策を教えていただけますでしょうか。よろしくお願いします。