Linux7.6—Shell编程
第一章:Shell编程概述
一.Shell名词解释
-
在Linux中主要通过内核去操作硬件,为了操作内核从而操作到硬件,Linux在内核外面套了一层壳(Shell),通过操作shell从而操作到硬件。
-
Shell
- 命令解释器(command interpreter)
- Shell是一个用C语言编写的程序,它是用户使用Linux的桥梁。
- Shell既是一种命令语言,又是一种程序设计语言。
- Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。
-
Shell两大主流:
- sh:
- Bourne shell (sh) ,Solaris,hpux默认Shell
- Bourne again shell (bash) ,Linux系统默认Shell
- 我们一般常说的shell指的默认就是bash
- Linux中shell的后缀为sh,Window的shell后缀为bat
- sh:
- csh
- C shell(csh)
- tc shell(tcsh)
- #.声明
- 告诉系统其后路径所指定的程序即是解释此脚本文件的Shell程序
# !/bin/bash(sh)
//sh与bash可以上下兼容,所以两者都可以写。
//在文件第一行上写好声明
二.Shell脚本的执行
写了一个很简单的脚本
#!/bin/bash
echo Hello World!
此时的脚本文件不可执行,可以通过chmod来赋权限。
chmod u+x helloworld.sh
- 输入脚本的绝对路径或相对路径
- /root/helloworld.sh
- ./helloworld.sh
- 执行的必须是一个可执行文件(绿)
- bash或sh +脚本文件
- sh helloworld.sh
- 脚本无执行权限时,root和文件所有者通过该方式可以正常执行
- 在脚本的路径前再加"."或source
- source helloworld.sh
- . ./helloworld.sh
- 区别
- 第一种和第二种会新开一个shell,不同shell中的变量无法共享
- 第三种是在同一个shell里面执行的
例:
# !/bin/bash
ping www.baidu.com > a
方法一/二
方法三
由于无法判断未来会用什么方法来执行脚本,而不同shell中的变量无法共享,定义变量时需要定义类似于C语言中的全局变量。利用export命令。
- export :可以将当前进程的变量传递给子进程去使用
- 将来配置profile(环境变量)的时候所有的变量前必须加export