博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
执行shell脚本中declare: not found
阅读量:4180 次
发布时间:2019-05-26

本文共 1458 字,大约阅读时间需要 4 分钟。

 


    在学习 Shell 脚本的时候,有两个例子在运行时出现异常。比如,我在 test-dash.sh 脚

    本输入如下内容:
        echo -e "Trekshot. /a /n"
        declare -i number=7
        echo $number
    在 Ubuntu 系统下使用 sh test-bash.sh 运行将出现如下提示信息:
        -e Trekshot.
        test-dash.sh: 2: declare: not found:
    有两个问题:
      a. echo 的参数 '-e' 怎么也打印出来了?
      b. 一个简单的整数声明语句为何提示 "declare: not found"?
    
    1.
    出现此问题的原因并非代码本身有误,而是 Ubuntu 系统的问题。我们在编写脚本时,第一
    行经常要写这么一行内容:#!/bin/bash. 这是对该脚本所使用的 shell 进行声明,因为
    Linux 上的 shell 并非只有一种,而各个 shell 的语法是由差别的。之所以把 echo 命令
    的参数误打出来,就是因为 sh 命令没有理解该语法,即当前使用的并不是 bash.下面来证
    明:
    获取 /bin 中相关文件的属性:
        -rwxr-xr-x 1 root root 725136 2008-05-13 02:48 bash
        -rwxr-xr-x 1 root root  87924 2008-06-21 00:07 dash
        lrwxrwxrwx 1 root root      4 2010-03-25 14:29 sh -> dash
    这表明在执行 sh test-dash.sh 的时候,我们使用的是一个叫 "dash" 的命令(注意 sh
    实为链接文件),而并不是脚本第一行中声明的 bash. 这就是上面现象的原因。 其实,如
    果使用 bash test-dash.sh 命令执行的话,上面两个错误根本不会出现。
    
    2.
    dash(Debian Almquist SHell) Ubuntu 自 6.10 后,将先前的 bashshell 更换成了
    dash (有待考证). 在设置 dash 的说明中有下面文字:
        The default /bin/sh shell on Debian and Debian-based systems is bash.
        However, since the default shell is required to be POSIX-compliant, any
        shell that conforms to POSIX, such as dash, can serve as /bin/sh. You may
        wish to do this because dash is faster and smaller than bash.
    
    大致意思是说默认的 shell 是 bash shell, 但只要是能兼容 POSIX 的 shell 都可以,而
    dash 比 bash 速度更快、更小巧,因此 Ubuntu 安装了 dash.
    
    3.
    怎么能把 dash 去掉而使用默认的 bash?使用如下命令:
        sudo dpkg-reconfigure dash
    此命令是对已安装的包进行重新配置,在菜单(dash-bash-sh.png)中选择是否将 sh 链接

 

    到 dash (Install dash as /bin/sh?) 选择否即可。

    附图一:Ubuntu 下设置 dash 界面

  

转载地址:http://ukrai.baihongyu.com/

你可能感兴趣的文章
输入百度网址后,我发现了一个秘密...
查看>>
卧槽,被盗号了!!!
查看>>
TCP ,丫的终于来了!!
查看>>
你删除过的所有小黄片,它都能轻易找到
查看>>
小米低调上线的良心APP,永久免费真心好用!
查看>>
最新款笔记本真香,包邮送一台!
查看>>
微信小程序商城项目(Java版),拿去毕设又节省2千块
查看>>
学计算机的女生都怎么样了?
查看>>
我去蔚来试车了。。。
查看>>
福利,PyTorch中文版官方教程来啦(附下载)
查看>>
硬核分享!靠这个技术过了阿里二面
查看>>
一把小刀,直插 class 文件的小心脏
查看>>
进大厂,稳了!
查看>>
暴跌30%,心态崩了
查看>>
卧槽,我的小破站爆了!
查看>>
理工人的留学之路怎么就这么难,科研项目一个接着一个,到底什么时候是个头啊...
查看>>
百年名校史上第一桩:博士论文抄袭,剥夺学位,涉事中国学者已在国内教书7年...
查看>>
人机对战?学会Python简直开挂!
查看>>
国内高校计算机教育存在哪些问题?
查看>>
狗东又被大佬搞了,舒服咯...
查看>>