0

下面的函数原本是一个 bash 函数。我需要它在busybox 1.22 ashshell 中运行。

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并作为dockeripbusybox shell输出运行时:sh: 0: not found. 不是一个很有帮助的错误,所以我的问题是错误是什么意思,上面函数的哪些部分不兼容busybox 1.22?

4

1 回答 1

3

这个算术表达式(( $# != 1 ))是 bash 语法。在 ash 中,它启动 2 个嵌套的子 shell,然后执行带有参数“!=”和“1”的程序“$#”。

改用这个

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