我有一个运行良好的脚本,但是当我今天运行它时,它说declare: not found. 我正在使用 bash shell,并且脚本开头的路径是正确的。
我的脚本中有两行标记如下:
declare -a RESPONSE
RESPONSE=($RESULT)
Run Code Online (Sandbox Code Playgroud)
它还说(是出乎意料的,但我想这是由于第一个错误而出现的。值得一提的是,当我直接输入declare时效果很好。
declare | grep USER 显示
USER=ashfame
USERNAME=ashfame
values="$SVN_BASH_USERNAME";
Run Code Online (Sandbox Code Playgroud)
那么,这里有什么问题吗?
enz*_*tib 30
你在用sh而不是bash吗?sh(链接到dash)不支持declare关键字,也不支持语法
VAR=(list)
Run Code Online (Sandbox Code Playgroud)
用于初始化数组。
int*_*ted 11
我怀疑您的“shebang”行(文件的可选第一行)正在引用sh而不是bash. 它应该是
#!/bin/bash
Run Code Online (Sandbox Code Playgroud)
对于 bash 脚本。如果脚本的第一行是
#!/bin/sh
Run Code Online (Sandbox Code Playgroud)
那么这将表明将使用严格兼容 bourne 的 shell;在 Ubuntu 的情况下,dash使用。在许多其他发行版中,这不会导致问题,因为它们链接/bin/sh到/bin/bash; 但是 ubuntu 链接到/bin/dash以允许系统脚本更快地运行。
该declare内置是一个bash的许多扩展到Bourne shell脚本规范; dash仅实现该规范而无需扩展。