質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

Q&A

解決済

2回答

6982閲覧

shファイルを実行させたい

marionetter8

総合スコア27

sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

0グッド

0クリップ

投稿2016/09/28 08:10

編集2016/09/28 08:56

MSYSというLinaxを環境windowsで行うアプリケーションで実行しているのですが、エラーが出ます

$ sh wav2raw.sh wav2raw.sh: line 48: onintr: command not found wav2raw.sh: line 50: syntax error near unexpected token `(' wav2raw.sh: line 50: `set path = ( /usr/local/SPTK/bin $path )'

宜しくお願い致します。

wav2raw.shの中身です。

wav2raw

147行コメント文省略 2#!csh -f 3onintr clean 4 5set path = ( /usr/local/SPTK/bin $path ) 6set sptkver = '3.5' 7set cvsid = '$Id: wav2raw.in,v 1.10 2011/12/19 06:00:35 mataki Exp $' 8 9 10set cmnd = $0 11set cmnd = $cmnd:t 12 13set file 14set flagfile = 0 15 16set directory 17set flagdirectory = 0 18 19 20set swab = 0 21set normalization = 0 22set normalization_all = 0 23set OutputType = s 24set OutMaxVal = 32767 25set data_position 26set READfmt = 0 27set ENTERdatachunk = 0 28 29@ i = 0 30while ($i < $#argv) 31 @ i++ 32 switch ($argv[$i]) 33 case -swab: 34 set swab = 1 35 breaksw 36 case +c: 37 set OutputType = c 38 set OutMaxVal = 127 39 breaksw 40 case +s: 41 set OutputType = s 42 set OutMaxVal = 32767 43 breaksw 44 case +i3: 45 set OutputType = i3 46 set OutMaxVal = 8388067 47 breaksw 48 case +i: 49 set OutputType = i 50 set OutMaxVal = 2147483647 51 breaksw 52 case +l: 53 set OutputType = l 54 set OutMaxVal = 2147483647 55 breaksw 56 case +C: 57 set OutputType = C 58 set OutMaxVal = 255 59 breaksw 60 case +S: 61 set OutputType = S 62 set OutMaxVal = 65535 63 breaksw 64 case +I3: 65 set OutputType = I3 66 set OutMaxVal = 16776135 67 breaksw 68 case +I: 69 set OutputType = I 70 set OutMaxVal = 4294967296 71 breaksw 72 case +L: 73 set OutputType = L 74 set OutMaxVal = 4294967296 75 breaksw 76 case +f: 77 set OutputType = f 78 set OutMaxVal = 1 79 breaksw 80 case +d: 81 set OutputType = d 82 set OutMaxVal = 1 83 breaksw 84 case +a: 85 set OutputType = a 86 breaksw 87 case -d: 88 @ i++ 89 set directory = $argv[$i] 90 set flagdirectory = 1 91 if ( ! -d $argv[$i] ) then 92 echo2 "${cmnd}: Can't find directory "'"'"$directory"'"'" \!" 93 set exit_status = 1 94 goto usage 95 endif 96 breaksw 97 case -n: 98 set normalization = 1 99 breaksw 100 case -N: 101 set normalization = 1 102 set normalization_all = 1 103 breaksw 104 case -h: 105 set exit_status = 0 106 goto usage 107 breaksw 108 default: 109 set file = ( $file $argv[$i] ) 110 set flagfile = 1 111 if ( ! -f $argv[$i] ) then 112 echo2 "${cmnd}: Can't open file "'"'"$file"'"'" \!" 113 set exit_status = 1 114 goto usage 115 endif 116 breaksw 117 endsw 118end 119 120goto main

以下文字数の都合により省略、申しわけございません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

archiver

2016/09/28 08:15

wav2raw.shの中身も提示してもらえませんか。
guest

回答2

0

あなたが実行しようとしているのは、shスクリプトじゃなくて、tcshスクリプトです。shコマンドでなくtcshコマンドで実行して下さい。ただ、MSYSには多分tcshは無いです。

案1:tcshスクリプトをbashスクリプトに書き直す
案2:MSYSじゃない物を使う(Cygwinには多分ある。あるいは仮想マシンを使って本物のLinuxを入れる)

追記:
コードの中見ました。やっぱりtcshスクリプトでしたね。
この程度有れば機械的にbashスクリプトに書き換えられると思います。gotoは無いのでそこだけ工夫。
今後のためにもbashスクリプトへの書き換えが良いかと思います。

投稿2016/09/28 08:27

編集2016/09/28 15:17
otn

総合スコア84423

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

スクリプトですが、otnさんが指摘されている通り、(t)cshのスクリプトですので、(ba)shではエラーとなってしまいます。解決策ですが、
策1:tcshを導入する
策2:bash用のスクリプトに書き換える
策3:Cygwinに切り替える
策4:仮想マシン上でLinuxを動かす
となるでしょうか。

一応、Windowsで動くtcshがあるので、それを入れてみるというのが現状をあまり変えずに済む方策になります。MSYSのパッケージマネージャ(pacman)からインストールできれば、それでインストールしてみてはいかがでしょう。ただ、あまり新しい情報がない上、これも古い話になりますが、Windows版のtcshは若干不安定なところもあるそうです。
tcshで思うような結果にならなかった場合は、スクリプトをbash用に書き換えてしまいましょう。構文が(t)cshと変わるところがありますが、bashスクリプト、(t)cshスクリプトの例や書き方をまとめたものがたくさんあるので、それと見比べながら書き換えていけばよろしいかと。
以上までが現状の環境を活かした上での解決策となります。策3と4は環境の再構築から始めなければなりません(Cygwinはそれほど大仰な構築ではないですが)。ただ、どちらもデフォルトのシェルがbashであり、tcshは追加でインストールする必要があります。


とりあえず、いくつか策を挙げましたが、書いてる内に「bashスクリプトに書き換える方が実は楽かも」と思ってしまいました。


ふと思ったのですが、MinGWでビルドしているのでしたら、ビルドされたコマンドってWindowsコマンドになりますよね。それだったら、MSYSでシェルスクリプト走らせるよりは、バッチファイルまたはWSH、Powershellスクリプトで組むという方法もあります。
(構文諸々がガラッと変わるので、移植は大変になるかもしれませんが)

投稿2016/09/28 14:35

編集2016/09/30 23:58
archiver

総合スコア1557

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問