このスレッドは解決済です(未解決に戻す場合はこちら)
<<戻る

bashの$( )について教えて下さい。 このメッセージに返信する
日時: 2010/04/07 10:24
名前: Linux初心者
URL:

どなたかご存知の方、教えて下さい。 (;_;)

手で、コマンドを実行したら正常実行されるのに、同じコマンドをbashの$()で実行したら、パラメーターで指定したホスト名「-n DS4700」の部分ががおかしいというエラーとなりました。

「-n DS4700」の代わりに、直接IPアドレスを指定しましたが、それでも同様な現象(手で実行した場合のみ成功する)となりました。

bashの $()での外部コマンド実行には何か制限が存在するのでしょうか

Linuxは、RedHat Enterprise Linux 5.4で、OSを導入後、IBMのDS4700用Storage Managerを導入しただけ、カスタマイズは行っていません。

宜しくお願い致します。

--------------------------------------------------------------------------------
GNOME Terminalからコマンドを実行した場合の実行結果 (正常実行)
(下記bashからのコマンド実行で表示された$Cmdの内容をCut & Pastしただけです。)
--------------------------------------------------------------------------------
[root@x330-17 client]# /opt/IBM_DS/client/SMcli -n DS4700 -c "recreate flashCopy logicalDrives [\"MATVOL1-1\" \"MATVOL2-1\" ];"
Performing syntax check...

Syntax check complete.

Executing script...

Script execution complete.

SMcli completed successfully.

--------------------------------------------------------------------------------
bashから $($Cmd > Log.txt)でコマンドを実行した場合のLog.txtの中身
Cmd="/opt/IBM_DS/client/SMcli -n DS4700 -c \"recreate flashCopy logicalDrives [\"MATVOL1-1\" \"MATVOL2-1\" ];\"
--------------------------------------------------------------------------------
Unknown or unresponsive address (hostname or IP address): flashCopy: flashCopy. Either
try another address or correct the problem causing the unresponsive address.
If you entered two addresses, you may have to enter only the responsive address
to allow the command(s) to work.

SMcli <DNS-network-name-or-IP-address>
[<DNS-network-name-or-IP-address>]
[-c "<command>;[<command2>;...]"]
[-n <storage-array-name> | -w <WWID>]
[-o <outputfile>] [-p <password>] [-e] [-S] [-quick]
SMcli <DNS-network-name-or-IP-address>
[<DNS-network-name-or-IP-address>]
記事編集 編集
Re: bashの$( )について教えて下さい。 このメッセージに返信する
日時: 2010/04/07 12:12
名前: stranger
URL: http://ja.528p.com/
Cmd=" "で囲ってないようですが、最初のダブルクォーテーションを除いたら
行末は \""でないの?
記事編集 編集
Re: bashの$( )について教えて下さい。 このメッセージに返信する
日時: 2010/04/07 11:54
名前: Linux初心者
URL:
Cmd="/opt/IBM_DS/client/SMcli -n DS4700 -c \"recreate flashCopy logicalDrives [\"MATVOL1-1\" \"MATVOL2-1\" ];\"

ですが、フォントの違いでダブルクォーテーションが表示されていないかもしれませんが、囲っていますので、これが原因ではなさそうです。
記事編集 編集
Re: bashの$( )について教えて下さい。 このメッセージに返信する
日時: 2010/04/07 18:59
名前: Linux初心者
URL:
シェル・スクリプトへのパラメーターの定義方法に問題がある事が分かりました。
下記コマンドを実行するには、変数にどの様に指定すれば良いかどなたか教えて頂けますでしょうか。
宜しくお願い致します。

手入力での正しいパラメーターの渡し方。
./test.sh parm1 parm2 "parm3 a b [\"X\" \"Y\"];"

シェル・スクリプトでのパラメーターの渡し方は?
#!/bin/bash
Cmd=" ????????????? どの様に指定すれば良いでしょうか? ?????????????"
buf=$(Cmd)

記事編集 編集
Re: bashの$( )について教えて下さい。 このメッセージに返信する
日時: 2010/04/08 04:42
名前: stranger
URL: http://ja.528p.com/
>シェル・スクリプトへのパラメーターの定義方法に問題がある事が分かりました。
>下記コマンドを実行するには、変数にどの様に指定すれば良いかどなたか教えて頂けますでしょうか。
>宜しくお願い致します。
>
>手入力での正しいパラメーターの渡し方。
>./test.sh parm1 parm2 "parm3 a b [\"X\" \"Y\"];"
>
>シェル・スクリプトでのパラメーターの渡し方は?
>#!/bin/bash
>Cmd=" ????????????? どの様に指定すれば良いでしょうか? ?????????????"
>buf=$(Cmd)
>
>
test.sh
#!/bin/bash
echo $1 $2 $3

./test.sh parm1 parm2 "parm3 a b [\"X\" \"Y\"];"
parm1 parm2 parm3 a b ["X" "Y"];

ダブルクォーテーションで囲まないと

./test.sh parm1 parm2 parm3 a b [\"X\" \"Y\"];
parm1 parm2 parm3

test.sh自体は$0

位置パラメータは$0から$9の10個しか利用できない。
もし,それ以上の引数(コマンド自身も含む)を利用したい場合は,
shiftで位置パラメータをずらして利用する。
shiftを実行すると,引数は$1に$2の値,$2に$3の値・・・$8に$9の値と1個ずつずれていく。
また,$9には引数の10 個目が新しく入れられる。ただし,$0は対象にはならない。
記事編集 編集
Re: bashの$( )について教えて下さい。 このメッセージに返信する
日時: 2010/04/08 16:20
名前: Linux初心者
URL:

下記で問題は解決できそうです。
有難う御座いました。

Cmd="./test.sh parm1 parm2 'parm3 a b [\"X\" \"Y\"];'"
Cmd=$(eval $Cmd)
記事編集 編集
Re: bashの$( )について教えて下さい。 このメッセージに返信する
日時: 2010/04/08 16:36
名前: stranger
URL: http://ja.528p.com/
>
>下記で問題は解決できそうです。
>有難う御座いました。
>
>Cmd="./test.sh parm1 parm2 'parm3 a b [\"X\" \"Y\"];'"
>Cmd=$(eval $Cmd)

>test.shの内容
>
>#!/bin/bash
>echo $1 $2 $3

パラメータの動きを示しただけですよ
記事編集 編集
Re: bashの$( )について教えて下さい。 このメッセージに返信する
日時: 2010/04/09 00:14
名前: Linux初心者
URL:
evalの部分が間違っていましたので訂正致します。
失礼致しました。

Cmd="./test.sh parm1 parm2 'parm3 a b [\"X\" \"Y\"];'"
eval $Cmd > ./output.txt 2>&1
記事編集 編集
сумки Луи Витон このメッセージに返信する
日時: 2013/07/30(Tue) 13:53
名前: 505827
URL: http://louisvuitton.web-box.ru/
SONY VAIOノート VGC-LB93HS起動はするが動作を受け付けませんシステムの復元・リカバリできません(おそらくシステムエラー、リカバリ領域が壊れておりHDエラーの可能性も高いそうです)外部損傷はなし付属品はACアダプタ・取扱説明書のみ сумки Луи Витон http://louisvuitton.web-box.ru/
記事編集 編集
件名※必須
名前※必須
URL
任意のパスワード (投稿後のコメント修正・削除時に使用)
画像認証※必須 投稿キー(画像で表示されている数字を入力)
コメント※必須

※質問を投稿後に自己解決された場合は、原因と行った対処を具体的に書き込み下さるよう、よろしくお願いします。

- WEB PATIO -