• 締切済み

シェル

シェルを勉強しはじめたばかりのものです。 勉強用のテキストに以下の記述があります。 source ${0%/*}XXXX ${0%/*}の意味がわからなくてこまっています。 これってどのような意味でしょうか。

みんなの回答

  • notnot
  • ベストアンサー率47% (4857/10273)
回答No.1

テキストであれば、それまでの部分に説明が書いてあるかもしくは巻末などのリファレンスを参照することになってると思うのですが。 ${0} はそれが書かれているシェルスクリプトのファイル名です。 ${0%/*} は、${変数名%文字列パターン} という構文で、この場合スクリプトファイル名の末尾を含んで /* (*は任意の文字列) というパターンを削除した残りです。複数ケース考えられる場合は最短の文字列を削除します。 スクリプト名が、/home/abc/bin/xyz であった場合、/* に当てはまる文字列は、「末尾から任意の文字列が並んでその前に/」なので、 /home/abc/bin/xyz /abc/bin/xyz /bin/xyz /xyz の4通り考えられますが、最短の/xyzが当てはまり、それを削除した物が結果です。 結局、source /home/abc/bin/XXXX というコマンドを実行することになります。

eufsm
質問者

お礼

丁寧なご回答ありがとうございます。 よくわかりました。

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

関連するQ&A

  • シェルスクリプトの切り替え?

    シェルには種類がありユーザーはそれを切り替えることによって好みのシェルを自由に選択することが出来る。 というのはわかりました。 が、シェルスクリプトを記述して実行する場合はどうなんでしょう。 bornシェルで記述したシェルスクリプトをcshから実行できるのでしょうか。 実行者とスクリプト記述者が同じシェル環境で操作しないといけないのかと思い質問しています。 ひょっとして意味のわからない質問かも知れませんがお願いします。

  • Cシェル内でBシェルの様な関数の記述方法はありますか?

    タイトル通り、Cシェル内でBシェルの様な関数の記述方法はありますか? Bシェルで言う所の以下の様な記述方法です。 関数() { } OSはSolarisです。 よろしくお願いいたします。

  • 起動シェル内の「. 」について

    アプリケーションサーバーの起動スクリプトに以下のような記述がありました。 この記述は現在のシェルのディレクトリを取得して、環境変数を設定するしシェルを呼び出す記述だと言うのは分かるのですが、最初の「. 」ドットスペースは何をしているのでしょうか? binDir=`dirname $0` . $binDir/setupCmdLine.sh

  • Linuxシェルでの大量データ投入スクリプト

    Linuxシェルでの大量データ投入スクリプト パフォーマンステスト用の大量(数千万件単位)のデータを DBに投入したいと思っています。 これをLinuxシェルで作成しようと思っています。 今まではsqlplus(あ、DBはoracleです)でログインしてから 複数のSQL文をベタベタ列挙したテキストファイルを読み込んで実行したり シェルの中で1回ずつコネクションを作成して処理を行なう というどちらかの方法しか行なったことがありませんでした。 あと、PLSQLで行なう方法もやったことはありますが、今回は 勉強の意味で、Linuxシェルのみを使用して行ないたいと思っています。 今回は、以下の条件・方針で行ないたいと思っています。とりあえず。 ・すべてのSQL文を記述するのではなく、レコードごとに変化する  IDの部分だけをシェルで埋め込む方法にしたい ・コネクションは何度も接続しなおすのではなく、まとめて1回で行ないたい ・ある程度の件数ごと(実質的には500件くらい)にコミットを行ないたい ・とりあえずLinuxシェルでやってみたい ・とりあえずストアドなしでやりたい 途中まで以下のソースを作成しました。 あとはechoの部分を書き換える感じなのですが、 コネクション管理の方法がわからずつまづいています。 まずは、Linuxシェル内でのコネクション管理をすることが出来るのかどうかを 教えてください。もしできるのであればその方法等を教えてください。 出来れば具体的な記述を下記シェルに埋め込む形での解説をお願いしたいです。 よろしくお願いします。 #!/bin/sh declare -i I=10 echo 【DBコネクション取得】 until [ ${I} -eq 0 ] do echo 【ID部分を埋め込んでINSERT文作成】 echo 【INSERT文実行】 if [ `expr ${I} % 3` -eq 0 ]; then echo 【commit文】 fi I=${I}-1 done echo 【commit文】 echo 【DBコネクション切断】

  • Cシェルの制御文について(求むCシェル・マスター)

    Cシェルでとある処理をすることになり、参考資料としてスペシャリストな人の シェルをみせてもらったのですが、ソースを読むこともままなりません(><) 私自身はVisualStudioを使ってCのプログラミングをかなり前にちょろっとやった程度で、 シェルというものをほとんど組んだことがないので、以下の点を教えてください。 if [ほにゃらら] then コマンドをぽちっとな elif [はにゃらら] then コマンド2をぽちっとな else exit fi 上記のような制御文を参考資料の中で多数みるのですが、 "elif"と"fi"が、まったく何者かわかりません。 Cシェルやelifなどで、ぐぐってみましたが、わからず 誰か助けてぇ~って感じです。 また、シェルの勉強サイト(C,Tc,B,Bash)のサイトも ありましたら教えてください。すんませんが、よろしくお願いします。

  • Kシェルに関して。

    Kシェルを勉強したいのですが、まだ始めたばかりなのでシェルスクリプトを 見てもよくわかりません。オライリージャパンの「入門kornシェル」だけを購入 したのですが、ほかにKシェルの勉強に役立つ本は何かありますでしょうか? また、Kシェルを勉強できるホームページなどご存知でしたらお教え下さい。 KシェルはBシェルに関連していると聞きましたが、Bシェルの本など見ても 通用するのでしょうか? Kシェルを勉強して、自分でシェルを作れるようになることが目的です。 Kシェルを勉強することに関して、何か役に立つ情報をご存知でしたらお教え ください。 よろしくお願いいたします。

  • シェルスクリプトで困っています 2

    度々申し訳ございません。 現在、Linuxマシン1からLinuxマシン2へTelnetでログインし、Linuxマシン2上にあるシェルスクリプト(/bin/sh)を実行し、Linuxマシン2上のプログラムを実行した後、Linuxマシン2からログアウトするシェルスクリプトを作成中です。 その、Linuxマシン2からログアウトする際に、 "exit"を記述しているのですが、その"exit"がTelnetログアウトの意味で実行されず、シェルスクリプトを終了するの意味で実行されていて困っています。 どなたか上手くTelnetからログアウトできるようにシェルスクリプトを組む方法をご存知ではないでしょうか?もし判りましたらご教授下さい。 よろしくお願い致します。

  • シェルからJavaを起動したい

    シェルからJavaを起動したい 上記ですけど、Linuxで毎回「java パッケージ名.クラス名」を打つのは面倒なので、 シェルスクリプトのファイルを作って、それを実行するだけで起動できるようにしようと思っています。 が、クラスが見つからないってエラーが出て実行できませんでした。 (「java パッケージ名.クラス名」を実行しているディレクトリにシェルを作ってます) 恐らく環境変数などの設定がシェルの中にいるのではないかと思いますが、 シェルスクリプトとかLinuxの環境には疎い為、どういった記述が必要なのか解りません。 どなたか例を提示して頂けないでしょうか? ちなみに、一般的なJavaの環境変数や、 プロジェクト特有・jarファイル等の環境変数は設定済みです。 それから、シェルは以下のように記述してます。 #!/bin/sh java パッケージ名.クラス名 よろしくお願いします。

  • ログインシェルと対話型シェルの区別について

    ログインシェルと対話型シェルの区別について理解していません。  ログインシェルはpsコマンドで見たときに-bashと表示されると書籍にありました。  テキストログイン(init 3)してpsコマンドをうっても-bashになっていません。  ご存知の方、いらっしゃいますでしょうか?

  • シェルの習得方法について

     システムの運用を行うことになり、Bシェルで作られたスクリプトの編集、追加を行うことになりました。  以前、コマンドラインでシェルを叩いたり、作られたスクリプトの値を変更する程度の作業は行っていました。  しかし今回は要求に合わせて設計(記述する内容)、作成、テストまでを行うことになり、経験の無い私はシェルの勉強をはじめました。  シェルを習得するために入門UNIXシェルプログラミングを読み、基本的な書き方や、シェル変数、リダイレクションについて大まかな概略は理解できたのですが、読んだだけで友人にはスクリプトの例を見たり、自分でスクリプトを作っていくことを進められましたが、何から手をつけ、どのように習得していけばよいか判らない状況です。 是非、習得方法をご存知の方が居られましたら、アドバイスお願いします

このQ&Aのポイント
  • ノズルチェックのエラーメッセージが出た場合、電源が正しく切れていないことが原因で、ノズルが詰まっている可能性があります。
  • ノズルチェックエラーの対処法を教えてください。
  • EPSON製品におけるノズルチェックエラーの対処方法を解説します。
回答を見る