2009-08-30 27 views
1

[編集]私は以下の次は、エラーがラインにあるとの回答をまとめました:渡すBASH引数

[編集] 場合は、[$ 1 NEの$値];その後、


私はコマンドに値を渡すためにしようとしている:

#!/bin/bash 
for value in $(mycommand $1) 
do 
    echo Found $value 
    if [$1 ne $value]; then 
     echo No match! 
    if 
done 

しかし、私は中に入力した場合、スクリプトを実行するには、次

#./myscript 25 

私が手をエラー:

Found somestuff 
./myscript: 25: command not found 

私がしたいのは、スクリプトの最初の引数(上記の例では "25")を渡して、コマンド 'mycommand'に送ります。

どうすればいいですか?

答えて

1

これは完全myscriptですか?私は書かれたスクリプトを試してみましたが、そのようなエラーを得なかっ:

$ ./myscript.sh 25 
Found somestuff 
$ 

私は、スクリプトの最後に$1を追加する場合:あなたの編集へ

$ ./myscript.sh 25 
Found somestuff 
./myscript.sh: line 6: 25: command not found 
$ 

更新:[コマンドを使用して、あなたはいくつかの余分なスペースを追加し、また-neを使用する必要があります。

if [ $1 -ne $value ]; then 

[コマンドは、多くの場合、ソフトやハードとして実装されています例えば、testコマンドにリンクされています

$ ls -l `which [` 
lrwxr-xr-x 1 root  root   4 May 16 2006 /usr/bin/[ -> test 

マニュアルページをtestために有効な式に関する詳細な情報を提供します。

+0

投稿が不完全であるため、両方のスクリプトを修正します。 – Jamie

+0

"ls -l"を提案してくれてありがとうございます - それはビジーボックスの実装を指していました。 私が代わりに使うことができる 'if'ステートメントに使用できる別の構文がありますか? – Jamie

+0

ご協力いただきありがとうございます。私は私の答えを投稿します... – Jamie

0

このスクリプトで問題は見つかりません。

$ more x 
#!/bin/bash 
for value in $(echo $1) 
do 
    echo Found $value 
done 
$ sh x 28 
Found 28 
$ 

mycommandは正確に何をしていますか?

0

グレッグはつまり、正しい方向に私を指摘:

  • []は、if文で、私は、彼らは 'プログラムのテストがかかりませんコマンド
  • 知らなかったの周りにスペースを追加しますne 'を引数とする。

私の修正スクリプトは次のとおりです。

!/bin/bash 
for value in $(mycommand $1) 
do 
    echo Found $value 
    if [ $1 != $value ]; then 
     echo No match! 
    if 
done 

感謝します。

+0

"ne"の前にハイフンを入れて '-ne'を付けます。また、[[''は '[' '特に引数の引用の必要性が減ったことに関するよりも良い理由については、Bash' man'のページとhttp://mywiki.wooledge.org/BashFAQ/031を参照してください。 –

関連する問題