0

以下の関数は、もともと bash 関数でした。busybox 1.22ashシェルで実行する必要があります。

dockerip() {
  if (( $# != 1 ))
  then
    for d in $(docker ps -q)
    do
      name=$(docker inspect -f {{.Name}} $d)
      ip=$(docker inspect -f {{.NetworkSettings.IPAddress}} $d)
      printf "%-15s | %15s\n" $name $ip
    done
  fi
}

上記のコードをロードしsourceて実行するとdockerip、busybox シェルの出力は次のようになりますsh: 0: not found。あまり役に立たないエラーなので、私の質問は、エラーの意味と、上記の関数のどの部分が busybox 1.22 と互換性がないかということです。

4

1 に答える 1

3

この算術式(( $# != 1 ))は bash 構文です。ash では、ネストされた 2 つのサブシェルを起動し、引数「!=」と「1」を指定してプログラム「$#」を実行します。

代わりにこれを使用してください

if [ $# -ne 1 ]
于 2015-03-12T21:42:07.750 に答える