Shell编程学习笔记1-Shell入门
什么是Shell?脚本文件的基础作用?
与MS-DOS系统中的批量处理文件类似,Linux中的脚本(也叫做shell程序)是一个文本文件,里面包含各类的Linux的Shell命令。通过脚本文件将这些命令汇集在一起,就可以连续执行Shell命令。
例如:cd和pwd命令都是Shell命令,如果我写了一个脚本文件test.sh,把这两个命令都放进test.sh里面,运行这个脚本文件时,就可以连续执行文件里的两个命令。
先来写第一个Shell脚本程序:
我在/home/csu/桌面 下新建一个test.sh文件,我要实现 当我运行这个脚本文件时
1.先进入指定目录;
2.输出当前工作路径;
3.最后输出指定文件里的内容。
用到的命令有
vim test.sh
#在test.sh 里面首行输入#!/bin/bash,即
#!/bin/bash
cd /etc
pwd
tail -5 /etc/passwd写完之后用:wq退出vim编辑器,运行test.sh文件(用bash test.sh命令)
编写脚本文件时第一行写#!/bin/bash的作用是明确告诉操作系统使用位于 /bin
目录下的 bash
解释器来执行脚本。
这样,一个简单的脚本文件就实现了把cd;pwd;tail三个命令汇集起来达到连续执行的效果。
如何执行Shell脚本程序?
这里介绍两个方法,依旧以刚刚创建的test.sh文件为例。
第一种:直接执行
直接输入脚本程序的绝对路径,如/home/csu/桌面/test.sh
执行结果如下,但是要使用直接执行这种方法的话,需要先对test.sh文件赋予可执行权限
第二种:使用Shell执行
直接用命令bash /home/csu/桌面/test.sh
当然如果当前工作路径已经在/home/csu/桌面 下,可以直接用bash test.sh
如下图,执行结果跟第一种方法是一样的
Shell语法之双引号“”与单引号''与转义符 \
当我在终端执行echo $SHELL 时,会输出该用户默认的Shell,一般输出结果是/bin/bash
那当我定义一个新的变量myname,定义时分别用双引号“”或单引号‘’时有什么不同。
用双引号时myname="my shell is $SHELL"
echo $myname输出的是my shell is /bin/bash
它会输出SHELL变量的值
[root@localhost 桌面]# echo $SHELL
/bin/bash
[root@localhost 桌面]# myname="my shell is $SHELL"
[root@localhost 桌面]# echo $myname
my shell is /bin/bash
用单引号时myname='my shell is $SHELL'
echo $myname输出的是my shell is $SHELL
它会把$SHELL当成普通字符串来输出,并不会输出SHELL变量对应的值
[root@localhost 桌面]# myname='my shell is $SHELL'
[root@localhost 桌面]# echo $myname
my shell is $SHELL
转义符\
一般定义变量时用双引号""的话是会输出SHELL变量对应的值,但是我又想用双引号,又想不调用SHELL变量的值,怎么办呢,这时候就可以用转义符 \ 了
执行结果如下:
[root@localhost 桌面]# myname="my shell is \$SHELL"
[root@localhost 桌面]# echo $myname
my shell is $SHELL
练习 :
分析以下脚本代码输出结果
#!/bin/bash
var="Hello"
echo "$var"
echo '$var'
A.Hello B.Hello C.$var D.$var
Hello $var Hello $var
好吧今天的学习笔记就写到这,有一起学习Shell编程的小伙伴可以一起交流!