脚本的运行方式
1 . 直接给权限 直接运行脚本 chmod a+x test.sh 开启一个子线程 在子的线程中执行
2. 没有权限 通过bash 运行脚本 bash test.sh #! /bin/bash 不需要
3. 没有权限 通过 .source 运行 . source test.sh 是在当前shell环境中执行,变量是可以获得的
shell的概念
shell 是用户与内核的一种交互,是解释器.
shell的命令有:
1 linux 命令 /bin/sbin
2 内置命令 将一些常用的命令的 构造与 shell内部
3 实用程序 /usr/bin usr/sbin /usr/local /bin
4 用户程序(可执行的程序)和shell脚本
shell的主要版本:
bash 大多数的linux 默认的shell
ash linux 系统占用资源最少的一个shell只有24个命令.不常用 也不方便
sh 是UNIX的标准shell
ksh 是UNIX的标准
csh 是面向于c语言的脚本shell
格式:
cmd [option] [ arguments]
通配符
.* 匹配的任意字符和任何数目的字符
? 匹配单一数目的任意字符
[] 匹配[]之内的任意字符
[!] 匹配[]之外的任意字符,!表示 非的意思
第一个脚本程序
定义变量,
var =“value” 定义
$ {var} 取值 定义一个边界
$ var
#! /bin/bash
echo "hello world"
for str in "sadaffdfeee"
do
echo "i am good an ${str}"
done
只读变量
#! /bin/bash
var ='22222'
readonly var # 只读变量
删除变量
unset var # unset 变量的名字
变量的类型
局部变量
环境变量
全局的变量
定义在shell中的变量 ,称为shell的局部变量
export var 定义全局的变量,在父进程中可也使用
shell中的特殊变量
$0当前脚本的文件名
$1 ..n 给脚本的参数 1是第一个参数,第二个$2
$# 参数的个数
$? 命令的退出状态
$$ 当前shell 的进程ID
命令行参数
#! /bin/bash
echo "file name $0"
echo "first bianliang $1"
echo "second bianliang $2"
. test.sh ww ee