次のbashコマンドが何をするのか、誰か説明してもらえますか?
CMD_PATH=${0%/*}
CMD_PATH 変数に割り当てられる値は何ですか?
スクリプトが現在実行されているフォルダー(ほとんどの場合$0
、スクリプトの実行方法によって異なります)である変数から、最後に出現したスラッシュ文字以降のものをすべて取り除きます。
これは、実行中のプロセスの最初のディレクトリを示しています。スクリプト内にある場合は、その名前が表示されます。
$0 は実行中のプロセスの名前です。シェル内で使用すると、シェルの名前が返されます。スクリプト内で使用すると、スクリプトの名前になります。
それを説明しましょう:
$ echo $0
/bin/bash
と同じです
$ echo ${0}
/bin/bash
次に、bash 置換が行われます: テキストを最後のスラッシュまで取得します:
$ echo ${0%/*}
/bin
この置換は、次の例で理解できます。
$ a="hello my name is me"
$ echo ${a% *}
hello my name is
現在実行中のスクリプトが開始されたディレクトリの名前を返します。
テストするには:
ディレクトリを作成します/tmp/test
:
mkdir /tmp/test
そのようなコンテンツでファイル 't.sh` を作成します。
#!/bin/bash
echo $0
echo ${0%/*}
t.sh
実行許可を与える:
chmod +x /tmp/test/t.sh
それを実行すると、次のように表示されます。
/tmp/test/s.sh
/tmp/test