bash 代码有问题

2023-12-26

function dec_to_bin {   

if [ $# != 2 ]  
then
    return -1
else
    declare -a ARRAY[30]
    declare -i INDEX=0
    declare -i TEMP=$2
    declare -i TEMP2=0 

    while [ $TEMP -gt 0 ]
    do
        TEMP2="$TEMP%2"
        #printf "%d" "$TEMP2"
        ARRAY[$INDEX]=$TEMP2
        TEMP=$TEMP/2
        INDEX=$[ $INDEX + 1 ]  #note

    done

    for (( COUNT=INDEX; COUNT>-1; COUNT--)){

        printf "%d" "${ARRAY[$COUNT]}"  <<LINE 27
        #echo -n ${ARRAY[$COUNT]}       <<LINE 28
    }
fi
 }

为什么这段代码给出这个错误

q5.sh: line 27: ARRAY[$COUNT]: unbound variable

如果未注释,第 28 行会出现相同的错误

还有一个问题,我对 bash 脚本中使用的 b/w '' 和 "" 的区别感到困惑,任何指向一些好文章的链接都会有所帮助。


它对我来说很好用,除了你做不到return -1。通常的误差值为1.

错误消息是因为您有set -u你正在开始你的for循环于INDEX代替INDEX-1 (${ARRAY[INDEX]}因为你的方式而永远是空的while循环被写入)。既然你正在使用%d在你的printf语句,空变量将打印为“0”(如果set -u未生效)。

另外,声明一个数组的大小是没有意义的。 Bash 中的数组是完全动态的。

我会编码for循环测试0(因为-1看起来很混乱,因为它不能是数字索引数组的索引):

for (( COUNT=INDEX - 1; COUNT>=0; COUNT--))

此表单已弃用:

INDEX=$[ $INDEX + 1 ]

使用这个代替:

INDEX=$(( $INDEX + 1 ))

or this:

((INDEX++))

我还建议养成使用小写或混合大小写变量的习惯,以减少变量名与 shell 变量发生冲突的机会。

你没有使用$1为了任何东西。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

bash 代码有问题 的相关文章

  • 当在 python linux 中执行命令 os.system() 时,在 python 中给出响应 yes/no

    考虑一个像这样的命令 yum install boto 当我在终端中执行时 要继续 会询问我是 否 我可以像这样用 python 回应它吗 os system yum install boto Next Yes 将通过相同的 python
  • 使用 sed 将反斜杠替换为斜杠[重复]

    这个问题在这里已经有答案了 我需要更换 with 我有一个文件 其中包含 test test2 test3 test4 I tried VRS Ruta cat ruta lst sed s g sed s g output test te
  • 无法连接到 Azure Ubuntu VM - 公钥被拒绝

    我们在 Azure 上使用 Ubuntu VM 一段时间了 很少遇到任何问题 然而 其中一台虚拟机最近出现了问题 出乎意料的是 Ubuntu VM 开始拒绝公钥 ssh i azure key email protected cdn cgi
  • 如何将命令输出作为多个参数传递给另一个命令

    我想将命令的每个输出作为多个参数传递给第二个命令 例如 grep pattern input returns file1 file2 file3 我想复制这些输出 例如 cp file1 file1 bac cp file2 file2 b
  • 安装 JDK 时出错:keytool 命令需要已安装的 proc fs (/proc)。 Linux 的 Windows 子系统

    我尝试在 Linux 的 Windows 子系统 Ubuntu 14 04 上安装 Oracle JDK 1 7 但出现以下错误 the keytool command requires a mounted proc fs proc Jav
  • 通过 Node.js 运行 bash 脚本 - 非法选项 -o pipelinefail

    我正在尝试使用 Node js 执行 bash 脚本child process exec 然而它在文件的第二行爆炸 usr bin env bash set eo pipefail TRACE set x echo we are here
  • grep 彩色线条

    我编写了一个简单的 PHP shell 脚本 它解析文件并输出某些元素 它产生大量的输出 采用不同的 bash 颜色 绿色表示正常 黄色表示警告 红色表示错误等 在开发过程中我想过滤掉一些行 例如 所有包含红色文本的行 我可以使用grep
  • 我可以在 Ubuntu 上使用 Homebrew 吗?

    我只是尝试使用 Homebrew 和 Linuxbrew 在我的 Ubuntu 服务器上安装软件包 但都失败了 这就是我尝试安装它们的方法 sudo apt get install build essential curl git m4 r
  • Linux 中的 Windows NAmed Pipes 替代品

    我们正在将现有的 Windows 代码移植到 Linux 我们使用 ACE 作为抽象层 我们使用 Windows 命名管道与多个客户端进行通信并执行重叠操作 linux 下这个相当于什么 我检查了linux命名管道 FIFO 但它们似乎只支
  • Bash 目录上的 For 循环

    快速背景 ls src file1 file2 dir1 dir2 dir3 Script bin bash for i in src do if d i then echo i fi done Output src dir1 src di
  • Linux 上的“软/硬 nofile”是什么意思

    当我尝试在RedHat EL5上安装软件时 我得到了错误 软 硬nofile的期望值是4096 而默认值是1024 我设法增加了这个数字 但我不知道参数是什么 他们指的是软链接和硬链接吗 我改变的方法是 a 修改 etc security
  • BASH 中带有千位分隔符的数字格式

    我有一个号码12343423455 23353 我想用千位分隔符格式化数字 所以输出将是12 343 423 455 23353 printf 3f n 12345678 901 12 345 678 901
  • 重新链接匿名(未链接但打开)文件

    在 Unix 中 可以创建匿名文件的句柄 例如 使用 creat 创建并打开它 然后使用 unlink 删除目录链接 留下一个带有 inode 和存储的文件 但没有可能的方法重新打开它 此类文件通常用作临时文件 通常这就是 tmpfile
  • 删除 Python 中某些操作的 root 权限

    在我的 Python 脚本中 我执行了一些需要 root 权限的操作 我还创建并写入文件 我不想由 root 独占所有 而是由运行我的脚本的用户独占所有 通常 我使用以下命令运行脚本sudo 有办法做到上述吗 您可以使用以下方式在 uid
  • 使用转义序列渲染文本(如终端)

    你好 我正在寻找一些库或工具来在文本文件中呈现带有转义序列字符的文本 我不知道如何称呼它 但这是一个例子 echo e abc vdef abc def echo e abc vdef gt tmp xxxxx vi tmp xxxxx 我
  • Flex 的远程版本误解了我的规则

    我使用 flex 和 bison 编写了一个小汇编程序 可以在我的机器 ubuntu 10 10 上构建并运行正常 现在其他人正在尝试在 arch linux 上构建它 并且他们安装的 flex 产生了不同的 lex yy c 这是不匹配的
  • shell脚本中是否有互斥/信号量机制?

    我正在 shell 脚本中寻找互斥 信号量 并发机制 考虑以下情况 除非 a 用户不关闭共享文件 否则 b 用户应该无法打开 更新它 我只是想知道如何在 shell 脚本中实现互斥量 信号量 临界区等 在 shell 脚本中实现锁定机制 文
  • 如何在bash中进行二进制加法

    我正在尝试将两个 32 位二进制数相加 其中之一是常数 address range in binary 另一个是数组的元素 IPinEachSubnet val 我正在尝试按照说明进行操作here https www linuxquesti
  • 使用 hcitool 扫描低功耗蓝牙?

    当我运行此命令时 BLE 设备扫描仅持续 5 秒 sudo timeout 5s hcitool i hci0 lescan 输出显示在终端屏幕中 但是 当我将输出重定向到文件以保存广告设备的地址时 每次运行该命令时 我都会发现该文件是空的
  • 在Linux中创建可执行文件

    我计划做的一件事是编写 非常简单的 Perl 脚本 并且我希望能够在不从终端显式调用 Perl 的情况下运行它们 我明白 要做到这一点 我需要授予他们执行权限 使用 chmod 执行此操作非常简单 但它似乎也是一个稍微费力的额外步骤 我想要

随机推荐

  • SwiftUI 以编程方式从可表示返回到视图

    我正在尝试在新的 swift ui 应用程序中设置 qr 阅读器 我可以用这一行加载 UIKit qr 阅读器视图 NavigationLink destination QRCodeScan Text Scan QR 这是我的 UIView
  • Spring MVC 表单输入值始终为 null

    我是 Spring MVC 的新手 但对 Java 的 Web 开发并不陌生 我正在尝试创建一个简单的表单 gt 控制器示例 我有一个表单 一个表单控制器 在下面粘贴的上下文 XML 中配置 和我的模型 一个简单的 bean 无论如何 当我
  • 分析和优化游戏 android

    我正在制作我的第一个 Android 游戏 它将是一个使用 opengl es 的 3D 街机游戏 我已经为此工作了很长一段时间 主要是优化引擎以适应未来的灵活性 无论如何 现在我已经完全完成了游戏功能和所有漂亮的东西 但它在不是我的调试手
  • 8.3 之后无法在 Spotlight 中使用键盘扩展

    自从我将键盘扩展项目更新到 Swift 1 2 并将设备更新到 iOS 8 3 后 我无法再在 Spotlight 搜索中使用我的扩展 如果我按住 地球 键 则我的分机不在列表中 如果进入 Spotlight 时它是活动键盘 则会使用系统键
  • 在 Jersey 2.22.2 中获取客户端 ip

    我正在尝试访问正在调用我的其余服务器的客户端 IP 但我只得到 null 作为响应 网络服务器正在运行 我可以从网络浏览器访问它 我尝试过 Context HttpServletRequest 并且还与 Context ContainerR
  • 为什么每个线程在扭曲内都有自己的指令地址计数器?

    CUDA 中的扭曲始终包含 32 个线程 并且所有这 32 个线程都运行相同的指令 https stackoverflow com questions 41009824 how to understand all threads in a
  • 将单元测试慢慢集成到项目中所需采取的步骤

    我目前正在与另一名带薪实习生一起完成一个即将完成的项目 由于这个项目是从一个合作社传承到另一个合作社 所以一路上采取了糟糕的做法 并将测试留到最后 我决定编写单元测试以在测试时学习新东西 然而 我正在开发一个 3 层 紧密耦合的应用程序 它
  • 使用块时的 iPhone EXC_BAD_ACCESS

    我正在尝试使用块创建一个简单的回调 我有一个 MainViewController 其中 addSubView 另一个 DatePickerViewController view 我创建了一个像这样的块 typedef void DateC
  • Heroku 上出现“PGError: FATAL: termination connection due to Administrator command” 的原因是什么?

    我在 Heroku 上有一个 Rails 应用程序 用户可以登录 我定期收到此异常 用户会话控制器 ActiveRecord 语句无效 PGError FATAL 正在终止 由于管理员的连接 命令 n服务器关闭连接 出乎意料 n t这可能意
  • emacs 可以为我重新缩进一大块 HTML 吗?

    在 emacs 中编辑 HTML 时 有没有一种方法可以自动漂亮地格式化标记块 更改如下 table tr td blah td tr table 到这个 table tr td blah td tr table 你可以做sgml pret
  • Kapt 无法与 OpenJDK 16 正常工作

    我有一个使用 Kotlin 1 5 0 和 Kapt 作为映射结构的应用程序 我已将 JDK 更新到 16 但出现以下编译错误 Failed to execute goal org jetbrains kotlin kotlin maven
  • 具有破碎阴影效果的路径

    我希望图像足够清晰 我有一个带有阴影效果的三角形 看起来不太好 似乎不知何故被打破了 任何帮助将不胜感激 Update 矩形和路径必须分开 XAML
  • android 在 jenkins 上构建发布 apk,而不以纯文本形式存储我的密码

    我需要能够使用 Jenkins 作业构建我的 apk 的发行版本 通过阅读以下SO问题 如何使用 Gradle 创建发布签名的 apk 文件 https stackoverflow com questions 18328730 how to
  • 使用 boost::regex_search 忽略大小写

    你如何使用boost regex search使用 C 中的忽略大小写标志或常量 请发布一个简单的例子 Thanks 你需要这样的东西 boost regex regex your expression here boost regex i
  • 如何使用直接状态访问将元素缓冲区数组“绑定”到顶点数组对象?

    对于其他缓冲区 有如下函数 glVertexArrayVertexAttribOffsetEXT this gt handle vao handle vbo getHandle vbo handle index specifies the
  • 在 JavaScript 中检索 R 对象属性

    我有一个包含 100 个观察值的双变量数据集 我使用了六边形分箱 最终得到了 26 个六边形分箱 为了保存 26 个六边形箱中每个箱中 100 个观测值的行 我使用了base attrR 中的函数 在下面的代码中 这是在以下位置完成的 at
  • 使图表有效地呈现负值

    该线程是以下线程的延续 尝试制作带有条形图和差异线 值的动态 D3 图表 https stackoverflow com questions 67638126 trying to make dynamic d3 chart with bar
  • net::ERR_CONNECTION_REFUSED 离子

    我正在使用 ionic 开发一个应用程序 我可以从 webApi 服务器检索数据并将它们显示在导航器上ionic serve但是当我尝试在模拟器上执行它时 ionic run android l c我收到此错误 net ERR CONNEC
  • 如何使用显式 NSLayoutManager、NSTextStorage、NSTextContainer 以编程方式设置 NSTextView?

    按照苹果文档 我试图设置一个简单的NSTextView通过它的两个构造函数方法 我将下面的代码放在viewDidAppear内容视图的视图控制器的方法 textView 是一个实例NSTextView frameRect 是内容视图的框架
  • bash 代码有问题

    function dec to bin if 2 then return 1 else declare a ARRAY 30 declare i INDEX 0 declare i TEMP 2 declare i TEMP2 0 whil