下面的函数最初是一个bash函数。我需要它在busybox 1.22 ash
shell中运行。
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 shell输出:sh: 0: not found
。这不是一个非常有用的错误所以我的问题是错误是什么意思以及上述函数的哪些部分不兼容busybox 1.22?
答案 0 :(得分:3)
此算术表达式(( $# != 1 ))
是bash语法。在ash中,它启动了2个嵌套的子shell,然后使用参数“!=”和“1”执行程序“$#”。
改为使用
if [ $# -ne 1 ]