shell 脚本的学习与使用(一)
来源:互联网 发布:英雄联盟录制软件 编辑:程序博客网 时间:2024/05/17 09:32
shell 本身是一个用 c 语言编写的程序,又是一种解释型的语言。 是用户使用 Liunx 的桥梁
shell 两种执行命令的方式
1> 交互式 interactive : 解释执行用户的命令 , 用户输入一条命令, shell 就解释执行一条
2> 批处理 batch : 用户事先写一个 shell 脚本, 其中很多条命令,让 shell 一次把这些命令执行完
shell 的种类
shell 的种类 ,即是 shell 脚本解释器的种类。常见的 shell 脚本解释器有 bash、sh、csh、ksh 等。bash 是 Liunx 默认的 shell , sh 是 Unix 默认的 shell 。 bash 完全兼容 sh, 所以我们学习一般学习 bash , sh 即可。
第一个 shell脚本
打开文本编辑器,新建一个文件。扩展名为 sh
输入一些代码:
#!/bin/bashecho "hello world"
“#!” 是一个约定的标记,告诉系统这个脚本需要什么解释器来执行,echo 命令用与想窗口输出文本,类似于java 的 system.out。
运行脚本: chmod +X ./text.sh #使脚本具有执行权
.text.sh
注意需要将命令行目录切换到文件脚本所在目录, ./text.sh 就会直接在当前目录找。如果有配置环境变量即可写成 text.sh
shell 变量:
定义变量
定义变量时,变量名不加 $ 美元符号,如:
age="18"
需要注意的是,和你熟悉的编程语言不一样变量名和等号之间不能有空格
变量命名须遵循的规则如下:
- 首字符必须为字母 (a-z ,A-Z)或 _ 下划线。
- 变量名中间不能有空格
- 不能使用标点符号
- 不能使用bash里的关键字
使用变量
使用一个定义过的变量,只要在变量名前面加美元符号即可 $ ,如:
#!/bin/bashecho "what is your name?"NAME=tommyecho "my name is ${NAME}"
注意:外面的花括号是可选的。目的是为了区分变量名分界,例如变量名后面还需要输出其他字符串,推荐所有变量都加上花括号
重新定义变量
已经定义过的变量可以被重新定义。如:
#!/bin/bashage=18echo "age is ${age}"age=25echo "age is ${age}"
只读变量
使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。意思就是被执行过 readonly 的变量 是不能被二次赋值的 类似于 java 中的 final
例:
#!/bin/bashage=18echo "age is ${age}"readonly ageage=25echo "age is ${age}"
很明显的输出第五行,提示只读变量。二次赋值无效
删除变量
使用 unset 命令可以删除变量,变量被删除后不能再次使用;unset 命令不能删除只读变量
#!/bin/bashname="bob"unset nameecho "name is ${name}"
可以看到变量name 没有任何输出
变量类型
变量的类型分三种
-局部变量
-环境变量
-特殊变量
特殊变量列表
命令行参数
运行脚本时传递给脚本的参数称作命令行参数。命令行参数用 $n 表示, 例如, \$1 表示第一个参数 \$2 表示第二个参数。依次类推(\为转义符号)
用法
#!/bin/bashecho "File name is $0"echo "Parameter 1 : $1"echo "Parameter 2 : $2"echo "$@"echo "$*"echo "size : $#"
$? 可以获取上个命令行的退出状态。所谓退出状态就是上个命令行执行后的返回结果。执行成功返回0 , 失败返回1。除此之外 \$? 还可以表示返回值
shell 替换
转义字符
如果表达式中包含特殊字符, shell 将会进行替换。例如在双引号中使用变量就是一种替换,转义字符也是一种替换
echo - e 表示将特殊字符进行转义输出,否则反之
变量替换
变量替换可以根据变量的状态(是否为空 是否定义等) 来改变他们的值
可以使用的变量替换形式:
#!/bin/bashecho ${var:-"Variable is not set"}echo "1 - Value of var is ${var}"echo ${var:="Variable is not set"}echo "2 - Value of var is ${var}"unset varecho ${var:+"This is default value"}echo "3 - Value of var is $var"var="Prefix"echo ${var:+"This is default value"}echo "4 - Value of var is $var"echo ${var:?"Print this message"}echo "5 - Value of var is ${var}"
shell 运算符
Bash 支持很多运算符,包括算数运算符,关系运算符,布尔运算符,字符串运算符和文件测试运算符。
原生 bash 不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr , expr 最常用。
expr 是一款表达式计算工具,使用它能完成表达式的求值操作。
例:
#!/bin/bashvalue = `expr 2 + 2`echo -e "Total is ${value}"
注意:
- 表达式和运算符之间要有空格,例如 2+2 是不对的 2 + 2正解。变量与等号间不能有空格
- 完整的表达式需要被一对 `
包含,不是单引号,此符号在 Esc 健下方
算数运算符
#!/bin/sha=10b=20val=`expr $a + $b`echo "a + b : $val"val=`expr $a - $b`echo "a - b : $val"val=`expr $a \* $b`echo "a * b : $val"val=`expr $b / $a`echo "b / a : $val"val=`expr $b % $a`echo "b % a : $val"if [ $a == $b ]then echo "a is equal to b"fiif [ $a != $b ]then echo "a is not equal to b"fi
- shell 脚本的学习与使用(一)
- Shell脚本学习一
- shell脚本学习《一》
- shell脚本学习 一
- 学习Shell脚本[一]
- 学习shell脚本(一)
- shell脚本学习一
- 【shell脚本学习】$*与$@
- linux shell脚本学习笔记一 脚本文件的构建
- 【脚本学习】区分shell与shell脚本
- Shell脚本学习 使用Linux环境变量(一)
- shell脚本学习笔记一
- shell脚本学习(一)
- shell脚本学习知识点(一)
- shell脚本学习笔记一
- shell脚本学习(一)
- shell脚本学习(一)
- zhu的学习日记:shell脚本学习一(基础)
- Install Softwares
- jpa元注解
- 梦中自编故事梗概
- One-to-Many|Many-to-One(双向+自身)
- C#之四十八 俄罗斯方块设计
- shell 脚本的学习与使用(一)
- C#之四十九 游戏编程周每日总结
- C#之五十 扫雷
- Print nodes in a given range of BST
- DCOS之docker各式文件系统简介
- Shell函数:Shell函数返回值、删除函数、在终端调用函数
- Shell函数参数
- Shell输入输出重定向:Shell Here Document,/dev/null文件
- Shell文件包含