温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

shell简介基础(一)

发布时间:2020-10-03 16:36:01 来源:网络 阅读:1056 作者:上帝之子521 栏目:开发技术

        我们在嵌入式的开发中,难免会要用到脚本。常用的也就是 makefile 和 shell 脚本了,之前我们学习了 makefile 相关的知识,接下来我们也将要学习 shell 相关的知识,以便在以后的嵌入式开发中能更快、更高效的完成任务。学习于果子玩转 Linux 下 SHELL 编程

        那么什么是 shell 呢?shell 是结余用户与系统之间,帮助用户与系统进行沟通的工具。关系如下图

shell简介基础(一)

        那么除了文字模式的 shell 外,GNOME、KDE 这类图形界面也属于 shell 的范畴。我们通常提到的 shell 都指的是狭义上的 shell,即文字模式的 shell。一般来说,shell 可以分成两类。第一类是由 Bourneshell 衍生出来的包括 sh,ksh,bash 与 zsh;第二类是由 CShell 衍生出来的,包括 csh 与 tcsh。除此之外,还有一个 rc。

        那么我们为什么要来学习 shell 呢?其主要原因可以总结为以下三点:

        1、图形用户界面只是一个程序套件,文字模式的 shell 功能和能执行的任务则比图形界面要强的多;

        2、shell 是文字模式,因此远程登录和传输的速度比图形界面更快;

        3、shell 使用起来更方便。


        Linux 下的支持的 shell 有好多种,我们学习的就是最常用的 bash shell。现在主要的 Linux 发行版都是用 bash 作为默认的管理 shell。下来我们就来说说如何编写一个简单的 bash shell。

        1、使用任何的文本编辑工具进行编写,如:vim

            #!/bin/bash  #放置在文件的开头

        2、设置脚本执行权限

            chmod a+x filename

            chmod 700 filename

        3、执行脚本

            bash your_script.sh

            sh your_script.sh

            ./your_script.sh


test.sh 源码

#!/bin/bash
echo "hello world!"

        运行结果如下

shell简介基础(一)

        我们看到在执行的时候,它说没有权限,然后我们执行上面的第二步。再来看看

shell简介基础(一)

        我们已经成功地用 shell 输出了经典的 hello world。那么上面的那句 #!/bin/bash 是什么意思呢?它的意思是用 bin 目录下的 bash 脚本解释器来对其进行解释。

        下来我们来看看 shell 中的变量。在 shell 中,变量分为系统环境变量和 UDV (user defined variable)变量。系统环境变量是系统本身所有,通常为大写字母,系统变量是通过 set 或 declare 指令进行查看;而 UDV 变量则是由用户创建和为维护的,我们建议定义其时进行大写的定义。那么这时为什么呢?因为 Linux 系统的命令全部采用的是小写方式,我们应避免冲突与混淆。

        那么 shell 中所有变量定义都是字符串;应区分变量的大小写,如:var 和 Var 是两个不同的变量;变量必须以字母或下划线开头,不得有“,”;‘:’;“\”等特殊字符。

        下来我们来进行下实验

shell简介基础(一)

        我们看到在 set | grep PATH 后出现了 PATH 相关的定义。在进行变量的定义时加 , 或者 \ 的时候,都出现了错误。下来我们来讲讲变量的声明和定义,变量的定义如我们上面所操作的那样,直接是 变量名=值(变量名与值之间的“=”号没有空格);如果我们需要声明带有空格的变量,那么我们就必须像定义字符串一样加上 “” 才行。如果我们需要声明一个只读变量,那么在定义的前面需要加上 readonly;修改环境变量,如PATH=$PATH:/class/bin ,修改用户自定义变量时,如:DIR="hello"。

        我们想要使用变量的话,应在变量前面加 “$”符号,在上面的示例中也展示了。echo $DIR 或 echo ${DIR}。那么上面两种用法有何区别呢?我们为何要在 shell 中使用变量,又为何要添加界定符 {} 呢?

        下来我们还是以实验为例来进行讲解:第一种写法:

#!/bin/bash
echo "/home/aston/test"

        我们来看看执行后的结果

shell简介基础(一)

        我们再来看看第二种写法

#!/bin/bash
PWD="/home/aston/test"

echo $PWD

shell简介基础(一)

        我们看到效果是一样的,但是第二种看起来就非常的简洁明了,所以我们在 shell 中定义变量是为了提高代码的可读性。下来我们来看看界定符的作用。在有的版本中,界定符是为了保证我们如果在一个环境变量后面追加东西时,它会直接写到这个环境变量的路径后面。在有的版本中,这个好像没什么作用了。不过我们尽量还是加上界定符,以保证最大的正确率。

向AI问一下细节
推荐阅读:
  1. shell简介
  2. Linux shell基础

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI