shell脚本学习——1.基础入门及变量

前言:

      shell脚本编程跟 java、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。

入门

1.首先我们创建一个目录,本专栏所有的编程文件将会都存放于此

mkdir -p /usr/local/shell

2.进入该目录下,并创建一个HelloShell.sh文件(以sh为后缀是标识此文件为shell脚本,也可以建.txt,.其他的,但是你看到后你知道这是shell脚本吗?)

cd /usr/local/shell/

vi HelloShell.sh

3.然后我们会进入到一个编辑页面,写下内容(先敲一个i ,才可以进行编辑),写完内容后输入:wq 回车表示保存退出

#!/bin/bash
echo "Hello Shell" 

第一行的 #!/bin/bash 它告诉系统本脚本需要什么解释器来执行,不用过于在意什么意思,记住第一行固定这么写就哦了,其实你还可以写#!/bin/sh

第二行表示向控制台输出一句 Hello Shell

3.5 我们直接运行该脚本会发现报错 -bash: ./HelloShell.sh: 权限不够

4.运行方式有两种

4.1 使用sh 文件名 的方式

./ 表示当前目录下

4.2 给脚本授权 (推荐)

chmod +x ./HelloShell.sh

授权后我们看到此文件绿了,要想生活过得去,怎么没点绿,并且多了个x,表明此文件可执行了

接着使用命令 

./HelloShell.sh

搞定,我们发现控制台成功输出了我们刚才的Hello Shell

变量

   介绍:

      变量分为系统变量和自定义变量两类

系统变量比较简单,我们先直接怼自定义变量

1.我们编辑刚才的文件  vi HelloShell.sh进入编辑,输入以下内容

#!/bin/bash
#echo "Hello Shell"
NAME="chenjing"
echo $NAME

第一行我们已经解释过,第二行是我们之前的内容,在最左方写一个#表示单行注释。

那么其实我们也就是从第三行开始看,首先我们声明一个变量NAME,将其右边的值赋给这个变量

接着输出 这个变量的值

注意:1.定义变量的时候不需要加$,直接写变量名,使用变量的时候在要变量名前加$

           2.给变量赋值使用=号,=号左右不能有空格,=号左右不能有空格,=号左右不能有空格

           3.变量名的声明需要符合以下规范

                  3.1 命名只能使用英文字母,数字和下划线,不能以数字开头

                  3.2  变量名称一般习惯大写

2. 撤销变量 unset

我们继续编辑刚才的文本

#!/bin/bash
#echo "Hello Shell"
NAME="chenjing"
echo $NAME
unset NAME
echo "撤销变量后----"
echo "name值为:$NAME"

我们再第五行加了unset NAME表示将变量NAME撤销,保存运行后,你会发现删除NAME后值就没了。

3.只读变量(静态变量)

只读变量不能被修改,也不能被unset

我们将之前的文本第三行修改一下,改为只读变量,如下:

#!/bin/bash
#echo "Hello Shell"
readonly NAME="chenjing"
echo $NAME
unset NAME
echo "撤销变量后----"
echo "name值为:$NAME"

运行后

 4.环境变量(系统变量)

我们可以在命令行敲set查看所有的环境变量

那这些环境变量我们都可以拿来直接使用,再次编辑HelloShell.sh

#!/bin/bash
#echo "Hello Shell"
:<<!
readonly NAME="chenjing"
echo $NAME
unset NAME
echo "撤销变量后----"
echo "name值为:$NAME"
!
#-----------------上面的都注释了-------------
echo "HOME=$HOME"
echo "PATH是:$PATH"

ps:上面我们说到#是单行注释,那多行注释使用 多行注释开始 :<<! 和 多行注释 !包裹起来,另外这个!你可以换成其他符号(其他内容),只要前后对应就行,建议使用特殊点的符号,试想想,如果你使用 :<<MM,在你注释的内容中正好有个MM,那你在这里就结束了,后面的就没注释到。

运行脚本后输出:

我们并没有定义过HOME变量和PATH变量,可是直接输出了内容,是因为其使用了环境变量。

猜你喜欢

转载自blog.csdn.net/chenjing928/article/details/86591743