![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?c9bd177)
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ランキング
-
ubuntu(linux)のシャットダウン...
-
ubuntuのシャットダウンが進ま...
-
bashでシングルクォート内の変...
-
Ubuntuで数字だけのユーザーア...
-
AWSでSSH接続をしたいのですが...
-
Linux Mint 日本語入力できなく...
-
ubuntuで デイスク/deb/loopと...
-
2TBのUSBメモリを2000円ほどで...
-
プログラミングPC、LinuxのOSパ...
-
Linuxのパーティション番号の変...
-
windows10を使っています。 wsl...
-
負荷号命題で A and bが成り立...
-
lubuntuのインストールが終わり...
-
Linux Mint でも使えないですよ...
-
Windowsのローカルディレクトリ...
-
Ubuntu on Xorgのログインについて
-
VertualBox でのLinux Mint の...
-
raspberrypi に bluealsaを入れ...
-
[Linux初心者]Ubuntu22.04.3LTS...
-
LinuxのノートパソコンでDVDコ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
bashでシングルクォート内の変...
-
ubuntu(linux)のシャットダウン...
-
AWSでSSH接続をしたいのですが...
-
Linuxのパーティション番号の変...
-
ubuntuで デイスク/deb/loopと...
-
自作のウェブサイトを友人に見...
-
ubuntuのシャットダウンが進ま...
-
[Linux初心者]Ubuntu22.04.3LTS...
-
Ubuntu系とCentOS系の違いはな...
-
Ubuntu on Xorgのログインについて
-
Windowsのローカルディレクトリ...
-
tarで纏める際に、複数場外した...
-
Linux のシェルスクリプトの強...
-
Ubuntuで数字だけのユーザーア...
-
linuxサーバーのキャッシュをク...
-
shellscript内のコマンドを、su...
-
ssl_request_logの必要性について
-
ubuntuのサーバー(virtual box)...
-
Kali Linuxで起動できない - Mi...
-
ホストオンリーアダプタで接続...
おすすめ情報