首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Codesourcery 2011.03中的Bash脚本找不到grep或sed

Codesourcery 2011.03中的Bash脚本找不到grep或sed
EN

Stack Overflow用户
提问于 2012-08-25 03:23:17
回答 3查看 885关注 0票数 1

我试图在Ubuntu12.04中运行CodeSourcery arm-2011.03.42 BASH脚本。在脚本的顶部有以下内容:

代码语言:javascript
复制
#! /usr/bin/env bash

但是,当我执行它时,我会得到以下错误:

第140行: grep:未找到命令

第140行: sed:未找到命令

我可以从命令行运行grep和sed,但不能在脚本中运行。

这是第140行的样子

代码语言:javascript
复制
env_var_list=$(export | \
    grep '^declare -x ' | \
    sed -e 's/^declare -x //' -e 's/=.*//')

如果我将第一行改为

代码语言:javascript
复制
#!/bin/sh

我得到以下错误:

第51行:语法错误:"(“意外(期待"}")

这是51号线的样子

代码语言:javascript
复制
check_pipe() {
    local -a status=("${PIPESTATUS[@]}")  #<-- Line 51
    local limit=$1
    local ix

实际上,#<-- Line 51并没有出现在shell脚本中。我只是为了清楚地把它加到这个帖子上。

我试过dos2unix和其他一些东西,但我就是赢不了。我非常感谢你的帮助。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-25 13:00:13

我在脚本中更改了这一行

代码语言:javascript
复制
pushenvvar PATH /usr/local/tools/gcc-4.3.3/bin

代码语言:javascript
复制
pushenvvar PATH /usr/local/tools/gcc-4.3.3/bin:/bin

现在看来起作用了。

票数 2
EN

Stack Overflow用户

发布于 2012-08-25 05:22:59

Shell脚本必须是bash,因为sh中不存在数组。

检查PATH环境变量,以及grep和sed /bin的路径。

票数 0
EN

Stack Overflow用户

发布于 2012-08-25 05:54:56

可能有几个可能的原因。

  1. 正如安东尼奥德所指出的那样,“#!”之间不能有任何空隙!和文件开始时的'/usr/bin/env‘。
  2. grepsed命令在$PATH中不存在,检查您的/bin/user/bin是否存在,或者在shell中运行which grepwhich sed
  3. 如果grepsed确实存在,则需要确保它们具有正确的access.They应该是可访问的和可执行的,通常不应该发生这种情况。
  4. 不能使用#!/bin/sh,而不能使用#!/usr/bin/evn#!/bin/bash,因为这将导致shell在POSIX兼容模式下运行,在这种模式下,大多数bash高级特性(例如数组)都没有功能。

如果这一切都不是这样的话,那就真的很奇怪了。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12118906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档