- PR -

シェルスクリプトの質問

1
投稿者投稿内容
Yu
会議室デビュー日: 2006/04/13
投稿数: 5
投稿日時: 2007-05-04 21:34
シェルスクリプトを作っているのですがうまく動作しません。
調べては見たのですが私の知識が乏しく調べたいことどのように調べればよいかわかりませんでした(シェルスクリプトで検索をかけるとヒットしすぎで・・・)
どなたか御知恵をお貸し頂ければと思います。

下記の内容でシェルスクリプトを作り実行してみたのですが
Lhaplus.sh
#!/bin/bash
test="\\"/home/***/.wine/drive_c/Program Files/Lhaplus/Lhaplus.exe\\" \\"$1\\""
/usr/local/wine0.9.36/bin/wine $test

下記のエラーがでてしまいます
wine: cannot find '"/home/***/.wine/drive_c/Program'

やりたいことはWineにてLhaplusを動かし圧縮ファイルを解凍したいです
下記のようにすると動くのですが理由あって上記のように動かせないでしょうか
Lhaplus.sh
#!/bin/bash
/usr/local/wine0.9.36/bin/wine "/home/***/.wine/drive_c/Program Files/Lhaplus/Lhaplus.exe" $1

わかる方が居りましたら教えてください。
よろしくお願いします。
あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2007-05-04 23:07
testの内容が正しいかは知りませんが、
/usr/local/wine0.9.36/bin/wine "$test"
とすればよいと思います。
Yu
会議室デビュー日: 2006/04/13
投稿数: 5
投稿日時: 2007-05-08 20:07
あしゅ様
返答有り難うございます
返事が遅れてしまい申し訳ありません
/usr/local/wine0.9.36/bin/wine "$test"
だとwineに渡したい引数が1つの場合よいのですが2つ以上だとダメみたいです。
変数$testの内容が
"/***/Program Files/***" "/***/**"
にして
/usr/local/wine0.9.36/bin/wine `echo $test`
のように変数に入れて渡すとだめです
/usr/local/wine0.9.36/bin/wine "/***/Program Files/***" "/***/**"
のように変数に入れず渡すとOKなのですが両者の渡し方は別物になってしまうのでしょうか
Program Filesディレクトリの名前のmのあとのスペースが無いとうまくいくのですがスペースが入るとそこで
wine: cannot find '"/home/***/.wine/drive_c/Program'
と切れてしまうようです

ふう〜っ、難しいですねシェルスクリプト
(私が変なことをしているだけかもしれないですが 汗)

解る方がいましたら引き続き宜しくお願い致します。
カーニー
ぬし
会議室デビュー日: 2003/09/04
投稿数: 358
お住まい・勤務地: 東京
投稿日時: 2007-05-08 20:17
eval?

eval /usr/local/wine0.9.36/bin/wine $test
Yu
会議室デビュー日: 2006/04/13
投稿数: 5
投稿日時: 2007-05-09 19:31
カーニー様
ピンポイントに有り難うございます。
また、勉強になりました
[@ITより抜粋]
eval 引数を一度評価し改めてコマンドにわたす
・・・って書いてありましたね@ITさんに 汗汗
おかげで無事解決できました
有り難うございます

あしゅ様・カーニー様お付き合い頂きありがとう御座いました
1

スキルアップ/キャリアアップ(JOB@IT)