• ベストアンサー

bashの引数

bashで次のようなプログラムを作っています。 1.a.shからa.outを呼び出す。 2.a.outは引数を取ります。 この時、a.sh [引数]でうまく実行させるには、 a.shの内容は、 #!/bin/bash a.out $1 でいいのでしょうか。教えてください。 (参考ページ等もありましたらご教授願えると幸いです。) 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.1

それであってます。 http://www.atmarkit.co.jp/flinux/rensai/theory08/theory08a.html の「■引数と変数」をご覧下さい。 /bin/sh で説明していますが、/bin/bash でも同じです。

hide76318
質問者

お礼

新しい問題はケアレスミスだったようです。 a.shで、違うディレクトリのプログラムを実行してたのですが、 #!/bin/bash ./place/to/a.out $1 これを #!/bin/bash cd place/to a.out $1 とする事で解決しました。 どうもありがとうございました。

hide76318
質問者

補足

ありがとうございます。 ここで新しい問題がでてまして、 例えばシェルからではなく、a.outを直接プロンプトより叩く、すなわち $ a.out [引数A]とすると、正常終了するのですが、 $ a.sh [引数A]とすると、セグメンテーション違反が起きてしまいます。 何がどう違うのでしょうか??

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • bashのaliasに引数を渡すには?

    sshでログインしたubuntuサーバー上で時間のかかるシェルスクリプト(例えば hoge.sh) を実行した後、sshから抜けてもプロセスを走り続けさせるためにnohupを使っています。 nohup hoge.sh > out.log 2> err.log < /dev/null & これはタイプ量が多いし、時間のかかるシェルスクリプトはhoge.shだけではないので、実行したいシェルスクリプトの名前の部分を引数にした下記のようなエイリアスを作りたいのですが、bashのaliasには引数が渡せないとの事です。 alias run='nohup $1 > out.log 2> err.log < /dev/null &' "alias 引数"で検索すると「関数を使うと良い」というページがいくつか見つかりますが、関数ではsshから抜けると終了してしまいます。どうするのが良いでしょうか?

  • #!/bin/sh の次の行から複数のコマンド(./a.exe 引数)

    #!/bin/sh の次の行から複数のコマンド(./a.exe 引数)を入力して、実行する方法。 私はWindows上でCygwinを使用し、C言語のプログラミングを作成しています。 引数を1個つかったプログラムのファイル s.c があります。 #!/bin/sh の下にコマンドをいくつか並べ #!/bin/sh a.exe 0 a.exe 1   (←0,1,2は引数) a.exe 2 ... ↑のような形にして、1度に引数が0,1,2のそれぞれの時の実行結果をだしたいのですが どうすれば #!/bin/shの次の行にコマンドをうてるのでしょうか? 私の場合、まず $ cc s.c で「Enter」キーを押して次に $ #!/bin/sh   とうつのですが、この下の行に文字をうつ方法が分らず          「Enter」キーを押して次に $ ./a.exe 0   とうちます。 そうすると、引数が0のときの実行結果はでてきますが 私がやりたいように ./a.exe 0 ./a.exe 1 ./a.exe 2... の実行結果がいっぺんにだすことはできません。 $ #!/bin/sh の下の行にコマンドをうつ方法を教えて頂きたいです。 質問の文に誤りや分かりずらい点がある場合があるとは思いますが よろしくお願いいたします。

  • bash カウントダウンさせたい。

    shellについて初めて勉強しています。 引数で指定した時間をカウントダウンする bashのファイルを作成しているのですが, どのようにしたらよいでしょうか? 引数が一つの時はその引数を秒数として扱い,引数が二つ以上の時は一つ目の引数を分数, 二つ目の引数を秒数として「x分y秒」と表示したいです。 sleepコマンドに引数として秒数を渡すと,その秒数だけ実行が止まるのではないかと思います。 具体的な #!/bin/bash この続きをよろしくお願いします。

  • bashの関数の引数にスペースが入るとズレる件

    bashの関数の引数にスペースが入るとズレる件 bashの関数の引数にスペースが入ると、引数が分離して、位置がズレてしまいます。 これを回避する方法はありませんか? ■aaa.sh-Top #!/bin/bash declare FuncPara1 declare FuncPara2 function f_echo() { echo 'uf_echo1='$1 echo 'uf_echo2='$2 echo 'uf_echo3='$3 } echo '---test1---' FuncPara1='aaabbb' FuncPara2='ccc' f_echo ${FuncPara1} ${FuncPara2} echo '---test2---' FuncPara1='aaa bbb' FuncPara2='ccc' f_echo ${FuncPara1} ${FuncPara2} ■aaa.sh-Bottom ■aaa.shの実行 # ./aaa.sh ---test1--- uf_echo1=aaabbb uf_echo2=ccc uf_echo3= ---test2--- uf_echo1=aaa uf_echo2=bbb uf_echo3=ccc このtest2の時に、 ---test2--- uf_echo1=aaa bbb uf_echo2=ccc uf_echo3= となって欲しい。 もしくは、何かしら「なったテイ」で、 引数1の値は「aaa bbb」 引数2の値は「ccc」 と関数側で判断できる方法はありませんか?

  • シェルスクリプト(Bash偏)の実行ファイルに関するご質問があります。

    シェルスクリプト(Bash偏)の実行ファイルに関するご質問があります。 ファイル名を変更するシェルスクリプトをbashで行おうとプログラムを作成したのですが、 実行するとbad interpreter: ディレクトリではありません とメッセージが出て終了します。記述に誤りがあるのか、実行の仕方が悪いのか分かりません。教えて下さい。 シェルの記述内容は ファイル名をtest.sh #!/bin/bash/ -f mv A.txt A.ori exit 実行方法として #>chmod x+a test.sh #>./test.sh で行いました。そうしたら、bad interpreter: ディレクトリーではありません とメッセージが出ます。 ちなみに #>. test.sh で実行するとターミナルがシェルの実行と同時に閉じてしまいますが、シェルを実行したディレクトリーを確認すると、処理が終わっておりました。

  • PHP シェルスクリプト 引数

    失礼します。現在PHPからシェルスクリプトを引数を付けて実行し、戻り値で確認が出来るか試しているのですがなかなか参考になる記事がなく実現が出来ない状態です 調べたところ、 phpからhoge.shというシェルファイルをargという引数で実行したいとします。 引数を"'. .'"で囲う事で、引数を渡せるようです。 $output = shell_exec('/bin/sh /path/to/hoge.sh "'.$arg.'"') var_dump($output) 上記のような記事を見つけたのですがhoge.shはどのように$argを受け取り、戻り値を渡しているのでしょうか?また、$argの値の中身は渡す引数の内容という認識で正しいのでしょうか?サンプルコードなどがあるとうれしいです。 ご教授よろしくお願い致します。

  • #!/bin/bash のラインでエラー発生

    お世話になります。 Linux初心者です。 下記のような***.shを作成し、./***.sh で実行すると、/bin/bash^M bad interperter: No such file or directory というエラーが発生してしまいます。 原因として考えられる事をご教授頂けないでしょうか? --------------------------------------- #!/bin/bash PATH=/usr/local/bin:/bin:/usr/bin for conf in /etc/webalizer*.conf do ~ ---------------------------------------

  • シェルスクリプトに引数を渡す方法?

    次のようなシェルスクリプトを作り、バッチ処理で実行したいのですが、うまくいかず困っています。 %ls test.sh data %less test.sh #!/bin/sh calc.exe input=$1 コマンドから通常実行するときは、 % test.sh data でうまく行きます。 これを、qsubを使ったバッチ処理で実行しなければならなくて、 %qsub test.sh data とすると、qsubは引数を1つしか取れないので、構文エラーとなり、うまく入力引数"data"を渡せません。 %qsub "test.sh data" %qsub 'test.sh data' で、引数を1つにしようとしましたが、ダメでした。 引数ファイル名"data"は、名前が変わるので、できるだけ可変になるようにしたいです。 どなたか、解決法もしくは、参考URLなど教えてください。

  • シェルスクリプト 引数の引渡しについて

    こんにちは。現在シェルスクリプトを勉強中なのですがどうしてもわからないことがあり投稿させていただきました。 シェルスクリプトにて作成した引数(引数にスペースがある場合)を別のシェルスクリプトへ渡そうとしたときにうまく引き渡せなくて困っています。 詳しくは以下のスクリプト参照願います。 (1)引数作成のスクリプト _/_/_/_/_/_/_/_/_/_/_/_/ #!/bin/sh a="HELLO" b="\"WOW WOW\"" test.sh $a $b _/_/_/_/_/_/_/_/_/_/_/_/ (2)test.sh _/_/_/_/_/_/_/_/_/_/_/_/ #!/bin/sh echo $1 echo $2 echo $3 _/_/_/_/_/_/_/_/_/_/_/_/ これを実行すると $1=HELLO $2="WOW $3=WOW" となってしまいます。 これを $1=HELLO $2=WOW WOW $3=NULL(空欄) となるようにシェルスクリプトで作成することはできないのでしょうか? ご教授よろしくお願いします。 よろしくお願いします。

  • [シェルスクリプト内で bashコマンド後のコマンドが実行されない]

    [シェルスクリプト内で bashコマンド後のコマンドが実行されない] 以下の様にシェルスクリプトを記述するとコマンド2が実行されません。 #! /bin/sh コマンド1 bash コマンド2 bash環境でコマンド2を実行させるにはどうしたら良いのでしょうか?

このQ&Aのポイント
  • 国際社会の偽善を感じる。ロシアによるウクライナ侵攻とアメリカのイラク戦争はどちらも国際法違反。
  • ロシア反対が多数となる国連総会での偽善を目の当たりにし、パラリンピックでのロシア選手の締め出しも偽善と感じる。
  • 日本を含む各国の世論や政府要人の発言、国連総会の議決にも嫌悪感を抱く。偽善者の声が耳障りだ。
回答を見る

専門家に質問してみよう