- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个名为 test.sh
的小脚本,它根据给定的索引打印值。
#!/bin/sh
days_in_month=(0 31 28 31 30 31 30 31 31 30 31 30 31)
echo "${days_in_month[$1]}"
如果我使用 bash
执行,上面的代码工作正常。
$ bash test.sh 1
31
但我需要在一个嵌入式板中执行相同的脚本,该板具有 sh
作为 Busybox
包的一部分。当我在那个板上运行命令时,它会抛出一个错误。
$ sh test.sh
test.sh: line 2: syntax error: unexpected "("
我观察到当我在 Ubuntu 系统中使用 dash
而不是 bash
时会抛出同样的错误。
$ dash test.sh
test.sh: line 2: syntax error: unexpected "("
有什么方法可以更改代码,使 Busybox sh 执行时不会出现任何错误?
最佳答案
busybox 的 sh
(即 ash
)和 dash 都不支持数组。
您可以编写一个大的 if-else 或 switch case 语句,或者使用以下技巧。我们使用以空格作为分隔符的单个字符串来模拟一个数组。
cut -d ' ' -f "$1" <<< "31 28 31 30 31 30 31 31 30 31 30 31"
或者更便携:
echo "31 28 31 30 31 30 31 31 30 31 30 31" | cut -d ' ' -f "$1"
另一种解决方法是滥用脚本的位置参数,如 this answer 中所示。 .
关于bash - Busybox sh 不会执行 bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50832481/
我正在尝试将“join”命令安装到我的 yocto 镜像中。我已经安装了 busybox,它没有 join 功能,但有 coreutils 的子集。 Coreutils 确实具有 join 功能,因此
我已经为我的嵌入式 Linux 剥离了 busy box。目前 busy box 仅支持 ps -w 选项。 我需要对应用程序的 CPU 和内存使用情况进行采样,并且采样应该至少每秒 5 个。 Top
我想在 BusyBox 服务器上启用 SSH 服务(目前我只能通过 Telnet 连接),所以我想,我需要编译 SSH 服务器,并将它发送到 BusyBox 路由器。所以我的问题是 - 如何创建 SS
buildroot 支持从 git repo 下载包。但是我的 git repo 包含子模块。 如何命令 buildroot 下载带有子模块的包? 最佳答案 自~ July 2016您可以为包启用子模
我正在使用 MobaXterm 便携版。 我发现了一个奇怪的设置,总结在这里。 /bin 中的外部命令工作正常。例如,使用 /bin/ssh.exe我可以 ssh好的。 内部命令是 “重定向”到bus
我是Docker的新手 我已经运行了 sudo docker run --interactive --tty --link web:web --name web_test busybox:lates
我在Kubernetes中创建了一个命名空间,并尝试使用以下命令创建一个容器: kubectl run busybox -it ----image=busybox -- sh 但是现在,每次我使用ku
我尝试在带有 PowerPc 的嵌入式系统上安装 BusyBox 1.20.2。起初我想尝试使用默认配置。所以这是命令 make defconfig make 这是结果: ma-bash-3.2# m
busybox 是否以共享库形式提供?我想以编程方式使用单个应用程序,而不是使用 system()。我听说过 libbusybox 和 libbb,但找不到任何文档。 最佳答案 存在名为 libbus
最近,我尝试按照“Pro Linux Embedded Systems”一书中提供的步骤为 MIPS 架构构建 busybox。事先,我已经成功安装和配置了 crosstool-ng 以使用 MIPS
我在/etc/inittab 中运行 BusyBox ::sysinit:/etc/init.d/rcS rcS 脚本在启动时调用/etc/rc.d/中的所有启动脚本。 如何可能通过在调用 BusyB
我想知道如何知道Busybox的版本。搜索互联网我发现这段代码: public void busybox()throws IOException { /* *
我正在开发一些在 Linux/BSD/Mac/Windows 上运行的 bash 脚本。我想将它们移植到 busybox 环境,让它们在 android 终端模拟器(如 termux)中运行。 获得
在构建 busybox 时,我发现一些源文件包含 linux 内核头文件。我添加了#define __KERNEL__ 来选择头文件行的某些部分。我还在内核头文件中添加了 #define _BUSYB
Busybox 不包含传统的 Linux"file"命令。有没有其他方法可以检测文件是二进制还是ascii?谢谢 最佳答案 你可以尝试使用grep。该线程包含使用 grep 命令的一些变体:https
我遇到了看起来有点奇怪的情况。 基础机器是 Ubuntu 18.04。我正在尝试创建一个自定义 initramfs + init 脚本,以与与 qemu 实例一起使用的自定义编译内核一起使用。 从我用
嵌入式 Linux 上的 Busybox,SSH 命令。 rm 命令只删除当前目录中的文件,还是也删除子目录中的文件?这是目录结构: ls -la total 5 drwxr-xr-x 3 r
我需要我的 docker 容器中的用户。我的构建来自缺少 groupadd 的 busybox 图像,我尝试使用 apt-get 添加它,但它也丢失了。我需要将什么添加到我的 Dockerfile 才
我在我的嵌入式 linux 板上安装了 busybox 作为“入门”包,我还需要使用 iptables 来配置一些防火墙规则。 有没有办法从 busybox shell 访问 iptables? 否则
我正在使用 Busybox 测试和嵌入 linux CPE; BusyBox v1.00 (2012.07.10-03:48+0000) multi-call binary 我想尝试使用盒子上所有可用
我是一名优秀的程序员,十分优秀!