
linuxで、シェルスクリプトを作成しているのですが、
あるページを参考にしていたところ、
"${0%/*}" 内容がでてきました。(参考ページは、cd "${0%/*}" と記述されていました。)
確認のために、下記ファイルを作成し、
echo "${0%/*}" でどういった内容になるのか確認してみました。
■シェルスクリプトの内容(ファイル:kakunin.sh)
#!/bin/sh
echo "${0%/*}"
(1)shで、シェルスクリプト実行
# sh kakunin.sh
kakunin.sh ←結果
(2).(ドット)により実行。
# ./kakunin.sh
. ←結果(. ドット)
結果が異なっています。
"${0%/*}"は何を意味しているのでしょうか。
なぜ、(1)と(2)で、実行結果が異なるのでしょうか。
御教示お願いします。
No.3ベストアンサー
- 回答日時:
man bash より。
${parameter%word}
${parameter%%word}
パターンに後方一致した部分を取り除く。 word が展開され、パス名展開の場合と同じようなパターンを作ります。 このパターンが parameter を展開した値の末尾の部分とマッチする場合、展開結果は parameter を展開した値から最短一致パターン (``%'' の場合) または最長一致パターン (``%%'' の場合) を取り除いたものになります。 parameter が @ または * である場合、 パターンを削除する操作は全ての位置パラメータに順番に適用され、 展開結果はリストとして得られます。 parameter が @ または * が添字になっている配列変数である場合、 パターンを削除する操作は配列の全ての要素に順番に適用され、 展開結果はリストとして得られます。
「/ があればそれとそれ以降の文字を削除する」 という意味です。
/が複数ある場合は最後の / 以降を削除。
man bashに内容が記述されていることを確認できました。
>「/ があればそれとそれ以降の文字を削除する」 という意味です。
そういうことだったのですが。見るところまで教えて頂きありがとうございました。
No.2
- 回答日時:
$0を%/*で処理した結果を表示してるのでは?
echo $0
>$0を%/*で処理した結果を表示してるのでは?
情報ありがとうございます。
頂いた情報を元に調べてみます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- その他(プログラミング・Web制作) Linuxについて質問です。 引数に指定されたアクセスログのファイルからアクセス数が多い順に上位3つ 1 2023/02/03 03:46
- UNIX・Linux Debianでシェルスクリプトにおいて正規表現の条件文で[[,]]が使えないので困ってます 2 2023/01/20 09:27
- UNIX・Linux Linuxのメッセージを出力して処理を終了する方法 1 2022/11/19 20:31
- UNIX・Linux Linuxの実行結果を修正したいです。 2 2022/11/23 08:32
- UNIX・Linux 実行の仕方及び実行結果が分かりません。 2 2022/11/17 19:31
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- その他(プログラミング・Web制作) bashのgrepで複数の検索、かつスクリプト内で改行する方法を教えてください。 1 2022/10/06 20:09
- C言語・C++・C# C言語の質問です。 以下の命令を実行するプログラムを作りました ①文字列aとbの長さを表示 ②aとb 1 2022/04/29 15:35
- その他(開発・運用・管理) WindowsからSSHでサーバーにあるファイルをダウンロードできない…。 3 2022/04/24 11:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
LinuxでWine使うとどのくらいWi...
-
Core 2 Duo の古いパソコンに最...
-
bashでシングルクォート内の変...
-
Linux のシェルスクリプトの強...
-
ubuntu(linux)のシャットダウン...
-
CentOSが起動時にフリーズ
-
Ubuntu on Xorgのログインについて
-
apacheでリバースプロキシを設...
-
ssh接続しようとしたらエラーメ...
-
ubuntuのシャットダウンが進ま...
-
私のパソコンでVirtualBoxは使...
-
windows10を使っています。 wsl...
-
Windowsのローカルディレクトリ...
-
「/var/log」内のログの削除の...
-
lubuntuのインストールが終わり...
-
windowsxpと同じくらい軽いLinu...
-
ユーザ名usr1でcentos(192.168....
-
ubuntu 22日本語Remixのisoイメ...
-
ubuntu 24 へのCanon 複合機ス...
-
Ubuntuで数字だけのユーザーア...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
LinuxでWine使うとどのくらいWi...
-
Core 2 Duo の古いパソコンに最...
-
Linux のシェルスクリプトの強...
-
ubuntu(linux)のシャットダウン...
-
bashでシングルクォート内の変...
-
ubuntuで デイスク/deb/loopと...
-
apacheでリバースプロキシを設...
-
CentOSが起動時にフリーズ
-
ubuntuのシャットダウンが進ま...
-
ubuntu が起動しない。
-
Windowsのローカルディレクトリ...
-
Ububtuでファイル共有できない...
-
Ubuntu on Xorgのログインについて
-
ログにserver reached MaxReque...
-
「/var/log」内のログの削除の...
-
ubuntu 24 へのCanon 複合機ス...
-
ssl_request_logの必要性について
-
私のパソコンでVirtualBoxは使...
-
WineのRufusでデバイスを検知す...
-
LinuxのノートパソコンでDVDコ...
おすすめ情報