shell简介基础(一)
admin
2023-07-27 07:20:06
0次

        我们在嵌入式的开发中,难免会要用到脚本。常用的也就是 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 中定义变量是为了提高代码的可读性。下来我们来看看界定符的作用。在有的版本中,界定符是为了保证我们如果在一个环境变量后面追加东西时,它会直接写到这个环境变量的路径后面。在有的版本中,这个好像没什么作用了。不过我们尽量还是加上界定符,以保证最大的正确率。

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...