shell语法基础
Posted lllllLiangjia
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell语法基础相关的知识,希望对你有一定的参考价值。
解释器
查看所有的解释器
cat /etc/shells
查看正在使用的解释器类型
grep root /etc/passwd
输出
- >代表正确输出指定位置
- 2>代表错误输出指定位置
- &>表示所有(正确和错误都包括)输出指定位置
- >>表示追加
定义变量
定义变量的格式:
变量名 = 变量值
取消变量的格式:
unset 变量名
注意事项
变量名可以字母/数字/下划线组成,不能以数字开始
变量名的语法格式:
$变量名
${变量名}
环境变量
- 存储在/etc/profile或~/.bash.profile
- 命令env可以列出所有环境变量
- 常见环境变量:PATH、PWD、USER、UID、HOME、SHELL
echo $PATH
位置变量
- 存储脚本执行时的参数
- 使用$n表示,n为数字序列号
- $1、$2、...、${10}、${11}、
创建一个脚本user.sh
liangjiabao@liangjiabaodeMacBook-Air mongodb-macos-x86_64-5.0.3 % cat user.sh
useradd "$1"
echo "$2" | passwd --stdin $1
预定义变量
可以直接使用
变量名 | 含义 |
$0 | 当前所在的进程或脚本名 |
$$ | 当前运行进程的PID号 |
$? | 上一条命令执行后的返回状态,0表示正常,1或其他值表示异常 |
$# | 已加载的位置变量的个数 |
$* | 所在位置变量的值 |
变量的作用范围
局部变量:
新定义的变量默认只在当前shell环境中有效,无法在子shell环境中使用
全局变量:
全局变量在当前shell及子shell环境中均有效
多引号的区别
- 双引号 "" :允许扩展,以$引用其他变量
- 单引号 ' ' :禁止扩展,即便$可视为普通字符
- 反引号 ` ` :将命令的执行输出作为变量值,$()与反引号等效
read标准值输入取值
格式: read [-p "提示信息" ] 变量名
-p可选,-t可指定超时秒数,-s设置是否在最终端显示输入的内容
read -p "请输入用户名:" name
read -s -p "请输入密码:" pass
useradd $name
echo "$pass" | passwd -- studin $name
运算
整数运算
使用$[] 或 $(( ))表达式
格式:$[整数 运算符 整数] 或 $((整数 运算符 整数))
小数运算
通过软件bc实现小数运算(scale = n可以约束小数位)
安装bc
[root@VM-0-12-centos ~]# yum -y install bc
交互型
[root@VM-0-12-centos ~]# bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
1.5 + 2.3
3.8
// 设置保留三位小数
scale=3
10/3
3.333
非交互式
[root@VM-0-12-centos ~]# echo "1.2 + 3.3" | bc
4.5
// 分隔符作为间隔
[root@VM-0-12-centos ~]# echo "1.2 + 3.3; 10 / 3" | bc
4.5
3
// 保留3位小数
[root@VM-0-12-centos ~]# echo "scale = 3;1.2 + 3.3; 10 / 3" | bc
4.5
3.333
小数的比较
bc支持的比较操作符:> >= < <= == !=
表达式成立返回1,否则返回0
[root@VM-0-12-centos ~]# echo "1 > 2" | bc
0
[root@VM-0-12-centos ~]# echo "10 > 2" | bc
1
范例
read -p "请输入三角形底边长度:" bottom
read -p "请输入三角形的高度:" hight
A=$(echo "scale = 1; 1/2 * $bottom * $hight" | bc)
echo -e "\\033[32m三角形面积是:$A\\033[0m"
[root@VM-0-12-centos ~]# ./test.sh
请输入三角形底边长度:10
请输入三角形的高度:5
三角形面积是:25.0
以上是关于shell语法基础的主要内容,如果未能解决你的问题,请参考以下文章