在CentOS我的腳本做工精細。但是Debian的擠壓,當我運行的腳本,我得到:
cpfailover.sh: 30: Bad substitution
腳本行說:
SCRIPT_PATH="${BASH_SOURCE[0]}";
我已經看到了很多例子,即使在這裏,這是一個正確的路線沒有。哪裏有問題。
在CentOS我的腳本做工精細。但是Debian的擠壓,當我運行的腳本,我得到:
cpfailover.sh: 30: Bad substitution
腳本行說:
SCRIPT_PATH="${BASH_SOURCE[0]}";
我已經看到了很多例子,即使在這裏,這是一個正確的路線沒有。哪裏有問題。
更改您的代碼
SCRIPT_PATH=$0;
,而不是
SCRIPT_PATH="${BASH_SOURCE[0]}";
你能否詳細說明爲什麼你覺得'$ 0'比'$ {BASH_SOURCE [0]}更好「? – 2016-06-09 04:54:40
它的POSIX/bin/sh兼容,其中$ {BASH_SOURCE [0]}只能在bash中工作。一般來說,如果你的目標不是多個體繫結構或舊操作系統,你應該將你的shebang切換到#!/ bin/bash,這樣你就可以使用所有bash的特性。請記住,Mac OSX帶有bash 3.2,所以如果你的目標是它,你不能使用bash-4的功能。 – 2016-10-03 20:50:53
可以用 「$ 0」,而不是'$ {BASH_SOURCE [0]}'? AFAIK他們應該是一樣的。 – khachik 2013-03-21 07:45:55
@khachik:在Bash 3.0中引入'$ {BASH_SOURCE [@]}'用於調試目的。它不等同於$ 0。根據Bash手冊,'$ {BASH_SOURCE [@]}'中的元素是對應於$ {FUNCNAME [@]}'中的元素的*源文件名*。 – pynexj 2013-03-21 08:33:11