linux - shebangs 脚本在机器对机器中表现异常

标签 linux shell shebang

我在一台 linux 机器上执行了下面的代码,它执行得很好,但是当我在另一台 linux 机器上执行时,它给出了如下错误

 Error:( declaration is not correct -- at line array=($@)
        declare is not correct -- at line declare  hash


code:
#! /bin/sh
  STR="SSIDRADIO0=RUSSIA&SSIDRADIO1=JAPAN&COUNTRY=TH&RADIOB=1&RADIOA=0&TXPOWERRADIO0=8&TXPOWERRADIO1=12&RADIOBCHAN=3&RADIOACHAN=60&PUBLISHSSIDRADIO0=1&PUBLISHSSIDRADIO1=1&SUPPORTEDTXRATERADIO0=12&SUPPORTEDTXRATERADIO1=18&REFRESHRATE=2000&INACTPERIOD=600"
IFS='&'
set -- $STR
array=($@)
declare  hash
for i in "${array[@]}"; do IFS="=" ; set -- $i; hash[$1]=$2; echo ${hash[$1]} >>help;done

请帮帮我

最佳答案

问题是 sh 通常软链接(soft link)到特定的 shell。即使上下文发生变化,它也会发生变化。在 Ubuntu 中,当您启动交互式 shell 时,sh 是 bash,如果您启动脚本,则为 dash。当我从 10.04 切换到 12.04 时,我所有的 sh shebanged 脚本都失败了!正如 user2864740 在评论中指出的那样,您可能遇到版本问题。

一个解决方案是在 shebang 中使用特定的 shell,如 /bin/bash 显式。另一个是让你的脚本适用于你可能遇到的所有 shell 版本/风格 ^^

关于linux - shebangs 脚本在机器对机器中表现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22218817/

相关文章:

shell - 当我更新 oh-my-zsh 时出现错误。我该如何解决?

linux - 从另一个 shell 脚本中调用 shell 脚本的区别

python - 如何在子 shell 中激活 conda env?

linux - COMMAND=/bin/chmod -R 777 失败启动后的日志

linux - 请协助 sed 命令文件

c - 如何在 shell 命令行中输入退格字符?

Java 11 : Executing Source File via Shebang is not working

python - 直接从命令行运行 python 脚本

linux - 反汇编 Debian 文件以提取操作码

linux - 不使用 sudo 提取 Linux 序列号