2

次のbashコマンドが何をするのか、誰か説明してもらえますか?

CMD_PATH=${0%/*}

CMD_PATH 変数に割り当てられる値は何ですか?

4

3 に答える 3

4

スクリプトが現在実行されているフォルダー(ほとんどの場合$0、スクリプトの実行方法によって異なります)である変数から、最後に出現したスラッシュ文字以降のものをすべて取り除きます。

于 2013-06-26T11:57:14.737 に答える
2

これは、実行中のプロセスの最初のディレクトリを示しています。スクリプト内にある場合は、その名前が表示されます。

「echo $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
于 2013-06-26T11:56:36.240 に答える
1

現在実行中のスクリプトが開始されたディレクトリの名前を返します。

テストするには:

  • ディレクトリを作成します/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
    
于 2013-06-26T11:56:32.753 に答える