错误 sh: 0: 将 bash 函数转换为 sh 时未找到
error sh: 0: not found while converting bash function to sh
下面的函数原来是一个bash函数。我需要它 运行 in 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?
这个算术表达式(( $# != 1 ))
是bash语法。在 ash 中,它启动 2 个嵌套的子 shell,然后执行带有参数“!=”和“1”的程序“$#”。
改用这个
if [ $# -ne 1 ]
下面的函数原来是一个bash函数。我需要它 运行 in 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?
这个算术表达式(( $# != 1 ))
是bash语法。在 ash 中,它启动 2 个嵌套的子 shell,然后执行带有参数“!=”和“1”的程序“$#”。
改用这个
if [ $# -ne 1 ]