シェルスクリプトで、自身のファイルパスを取得する方法を検索したところ、下記ページへとたどり着きました。
▼おしえて!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ランキング
-
VBA 電話番号の正規表現について
-
プログラマーと学歴の関係性に...
-
vba クリップボードクリアにつ...
-
このURLで広告を出しているのは...
-
ImageMagickでgif画像の一部が...
-
小学1年生の子です。塾に行かせ...
-
プログラミングのPythonのnoteb...
-
GoogleAppsScript文字列置換の...
-
楽しくて最高のプログラミング...
-
ホワイトハッカー
-
プログラミング ソースコード
-
ものづくりに向いているプログ...
-
大学のゼミのレポートがムカつ...
-
スカラーのベクトル微分
-
初心者powershellのPS1ファイル...
-
Google ColaboでGUI作成
-
プログラミングで例えばゲーム...
-
Powershellとコマンドプロンプト
-
MacのPythonでの開発について
-
Latexに関する質問です。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラミング
-
小学1年生の子です。塾に行かせ...
-
vba クリップボードクリアにつ...
-
プログラマーと学歴の関係性に...
-
Webサイト内に埋め込んだmp4動...
-
正規表現で複数マッチ条件で悩...
-
windowsでテキストファイルの各...
-
楽しくて最高のプログラミング...
-
プログラミング ソースコード
-
Pythonって何を意識した言語な...
-
プログラミングを教えたいです...
-
pythonで複数画像からgifを作る...
-
pythonにてseleniumを使うも、...
-
Pythonでgif画像が上手く作れない
-
Google ColaboでGUI作成
-
テキストファイルのファイル名...
-
プログラミング、アーキテクチ...
-
そのまま使っただけなのに・・...
-
このURLで広告を出しているのは...
-
chatGPTで次々と質問をしていく...
おすすめ情報