アプリ版:「スタンプのみでお礼する」機能のリリースについて

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)で、実行結果が異なるのでしょうか。

御教示お願いします。

A 回答 (3件)

man bash より。



${parameter%word}
${parameter%%word}
パターンに後方一致した部分を取り除く。 word が展開され、パス名展開の場合と同じようなパターンを作ります。 このパターンが parameter を展開した値の末尾の部分とマッチする場合、展開結果は parameter を展開した値から最短一致パターン (``%'' の場合) または最長一致パターン (``%%'' の場合) を取り除いたものになります。 parameter が @ または * である場合、 パターンを削除する操作は全ての位置パラメータに順番に適用され、 展開結果はリストとして得られます。 parameter が @ または * が添字になっている配列変数である場合、 パターンを削除する操作は配列の全ての要素に順番に適用され、 展開結果はリストとして得られます。

「/ があればそれとそれ以降の文字を削除する」 という意味です。
/が複数ある場合は最後の / 以降を削除。
    • good
    • 0
この回答へのお礼

man bashに内容が記述されていることを確認できました。

>「/ があればそれとそれ以降の文字を削除する」 という意味です。
そういうことだったのですが。見るところまで教えて頂きありがとうございました。

お礼日時:2013/06/23 15:57

$0を%/*で処理した結果を表示してるのでは?


echo $0
    • good
    • 0
この回答へのお礼

>$0を%/*で処理した結果を表示してるのでは?

情報ありがとうございます。
頂いた情報を元に調べてみます。

ありがとうございました。

お礼日時:2013/06/23 15:55

マニュアルは読んだ?

    • good
    • 0
この回答へのお礼

すみません。
こういう時は、どういったコマンドのマニュアルを読むべきだったのでしょうか?
所からわかってなかったのです。

お礼日時:2013/06/23 15:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!