我试图在Ubuntu12.04中运行CodeSourcery arm-2011.03.42 BASH脚本。在脚本的顶部有以下内容:
#! /usr/bin/env bash但是,当我执行它时,我会得到以下错误:
第140行: grep:未找到命令
第140行: sed:未找到命令
我可以从命令行运行grep和sed,但不能在脚本中运行。
这是第140行的样子
env_var_list=$(export | \
grep '^declare -x ' | \
sed -e 's/^declare -x //' -e 's/=.*//')如果我将第一行改为
#!/bin/sh我得到以下错误:
第51行:语法错误:"(“意外(期待"}")
这是51号线的样子
check_pipe() {
local -a status=("${PIPESTATUS[@]}") #<-- Line 51
local limit=$1
local ix实际上,#<-- Line 51并没有出现在shell脚本中。我只是为了清楚地把它加到这个帖子上。
我试过dos2unix和其他一些东西,但我就是赢不了。我非常感谢你的帮助。
发布于 2012-08-25 13:00:13
我在脚本中更改了这一行
pushenvvar PATH /usr/local/tools/gcc-4.3.3/bin至
pushenvvar PATH /usr/local/tools/gcc-4.3.3/bin:/bin现在看来起作用了。
发布于 2012-08-25 05:22:59
Shell脚本必须是bash,因为sh中不存在数组。
检查PATH环境变量,以及grep和sed /bin的路径。
发布于 2012-08-25 05:54:56
可能有几个可能的原因。
grep和sed命令在$PATH中不存在,检查您的/bin和/user/bin是否存在,或者在shell中运行which grep和which sed。grep和sed确实存在,则需要确保它们具有正确的access.They应该是可访问的和可执行的,通常不应该发生这种情况。#!/bin/sh,而不能使用#!/usr/bin/evn或#!/bin/bash,因为这将导致shell在POSIX兼容模式下运行,在这种模式下,大多数bash高级特性(例如数组)都没有功能。如果这一切都不是这样的话,那就真的很奇怪了。
https://stackoverflow.com/questions/12118906
复制相似问题