[ "${1:0:1}" = '-' ] 意味

[

MySQLプロセスを開始するための次のスクリプトがあります。

if [ "${1:0:1}" = '-' ]; then
    set -- mysqld_safe "$@"
fi

if [ "$1" = 'mysqld_safe' ]; then
    DATADIR="/var/lib/mysql"
...

この文脈では、1:0:1 とはどういう意味ですか?

ベストアンサー1

-明らかに、これはドットで区切られたパラメータオプションのテストです。実はちょっと変です。非標準bash拡張を使用して、最初の文字と最初の文字のみを抽出しようとします$10ヘッダー文字インデックスで、文字列の1長さです。[ test同様の状況では、次のような場合があります。

[ " -${1#?}" = " $1" ]

しかし、両比較とも点線引数も解釈するので特に適していない。これが私がそこで先行するスペースを使用する理由ですtest-

この種のタスクを実行する最良の方法と一般的に実行される方法は次のとおりです。

case $1 in -*) mysqld_safe "$@"; esac

おすすめ記事