![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
シェルスクリプトで、自身のファイルパスを取得する方法を検索したところ、下記ページへとたどり着きました。
▼おしえて!HOME'Sくん シェルスクリプト 自身のファイルパスを取得する方法
http://oshiete.homes.jp/qa2419248.html
▼教えて?Coneco shシェルで実行パスではなくファイルのパスを取得する方法
http://oshiete.coneco.net/qa2866868.html
しかし、それぞれのページに掲載されていた
${0%/*}
や
${1%/*}
の意味がどうしてもわかりません。(一応、bashとかで検索してみたりはしました)
そこで、下記内容について、教えてください!
・この0というのは、$0のことなのでしょうか。
・この%は、正規表現か何かなのでしょうか。
・この/は何を指しているのでしょうか?
・この*は、どの部分の1文字以上を指しているのでしょうか?
以上、よろしくお願いしますッ!
No.1ベストアンサー
- 回答日時:
man bashに書いてあります。
>この0というのは、$0のことなのでしょうか。
$0は${0}の簡略表現で、${0%/*}などはそれに修飾子を付けたものです。
>この%は、正規表現か何かなのでしょうか。
正規表現ではありません。man bashより抜粋:
> ${parameter%word}
> ${parameter%%word}
>word が展開され、パス名展開の場合と同じようなパターンを作ります。
>このパターンが parameter を展開した値の末尾の部分とマッチする場合、
>展開結果は parameter を展開した値から最短一致パターン (``%'' の場合)
>または最長一致パターン (``%%'' の場合) を取り除いたものになります。
>この/は何を指しているのでしょうか?
>この*は、どの部分の1文字以上を指しているのでしょうか?
「/*」は、スラッシュの後に任意の文字が0文字以上を表します。正規表現で書くと「/.*」です。
「パス名展開の場合と同じような」と書いてありますが、パス名展開の時 * は、パス区切りの / や ファイル名先頭の . にマッチしませんが、ここでは任意の文字列にマッチします。うーむ、この違いはman bashに書いてないかも。
man bashの説明と合わせると、${0} の内容の末尾から「/*」のファイルマッチが合致する最短パターンを取り除いたものになります。
${0}==/aaaa/bbbb/cccc だとすると、「/*」は、/aaaa/bbbb/cccc と /bbbb/cccc と /cccc に合致しますがその中の最短である /cccc が選択され、それが${0}から除去された物が最終的な結果です。つまり、/aaaa/bbbb
ご回答ありがとうございます!
事前に4時間ぐらいかけて検索しても分からなかったことなのに、
これだけ詳細にご説明していただけたおかげで、
完全に理解することができました。
お礼が遅くなりましたが、
本当にありがとうございましたッ!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(IT・Webサービス) 301リダイレクトの使い方について 7 2022/04/05 17:50
- その他(プログラミング・Web制作) Linuxについて質問です。 引数に指定されたアクセスログのファイルからアクセス数が多い順に上位3つ 1 2023/02/03 03:46
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- その他(プログラミング・Web制作) 図に示す階層構造で,現在のディレクトリ(カレントディレクトリという)が*印のディレクトリであるとき, 2 2022/11/16 10:55
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- その他(プログラミング・Web制作) linuxについて質問です 1 2023/02/06 19:55
- その他(コンピューター・テクノロジー) <a href="file:///フォルダ名/ファイル名">リンクテキスト</a>について 1 2023/04/06 22:40
- その他(開発・運用・管理) WindowsからSSHでサーバーにあるファイルをダウンロードできない…。 3 2022/04/24 11:08
- Visual Basic(VBA) シートをコピーする下記記述でダイアログを用いた記述がわかりません?( A = Dir(ThisWor 4 2022/08/22 12:26
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
python3について。
-
Pythonのコードエラーについて...
-
ホームページのプログラムの見...
-
Pythonで仮想通貨の自動売買が...
-
google formsを使ったタスク依...
-
Google ColaboでGUI作成
-
python質問
-
恒久的リダイレクトについて
-
Python... 環境設定 初心者です...
-
過剰なオブジェクト指向脳から...
-
vba クリップボードクリアにつ...
-
HTMLソースが表示のページのも...
-
このURLで広告を出しているのは...
-
pythonの画像の貼り付けについて
-
pythonでのカーソル移動がずれる
-
このプログラミング言語のfor分...
-
ウェブサイトのアクセスログに...
-
{ CONTROL Forms.Label.1}が...
-
Version Control on Unity
-
VBSでテキストファイルの2行目...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vba クリップボードクリアにつ...
-
テキストファイルの1行目のみを...
-
Google ColaboでGUI作成
-
Python... 環境設定 初心者です...
-
AIの登場でプログラマーたちが...
-
入力された文字列が、LD22000を...
-
ITパスポートの勉強をしていま...
-
プログラミングサイトについて。
-
バッチファイルが保存されてい...
-
VBSでテキストファイルの2行目...
-
40代後半でゼロからのプログラ...
-
{ CONTROL Forms.Label.1}が...
-
Version Control on Unity
-
過剰なオブジェクト指向脳から...
-
VBAでパワーシェルを実行したい...
-
ImageMagickでgif画像の一部が...
-
正規表現 URL抽出「 [\\/\\b]{0...
-
VBA 電話番号の正規表現について
-
そのまま使っただけなのに・・...
-
プログラム言語について。
おすすめ情報