shell基本语法
Posted 稀里糊涂林老冷
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell基本语法相关的知识,希望对你有一定的参考价值。
1 shell脚本的规范:
1 文件后缀是 .sh
2 首行是命令解释器: #!/bin/bash
3 首行下面注释写脚本基本信息:
脚本名称、功能、编写时间、撰写人、联系方式等
2 shell执行方式:
1 使用命令解释器加载脚本文件:
bash 文件
2 绝对路径或相对路径
./demo.sh
脚本需要有可执行权限并选定了解释器
3 source 或 .
source ./demo.sh
. demo.sh
功能:加载脚本文件
3 shell变量:
变量定义:
变量名=变量值
变量打印:
echo $变量名
分为: 本地变量、全局变量、内置变量
3.1 本地变量:
普通变量:
1 变量名=变量值 变量必须连续不能有空格和特殊字符
2 变量名=‘变量值‘ 变量可以含有空格和特殊字符 按照原样
3 变量名="变量值" 变量可以不连续 变量值中可以引用其他变量
命令变量:
1 变量名=‘命令‘
2 变量名=$(命令)
3.2 全局变量:
1 查看全局变量:
env
2 定义全局变量:
先定义后声明:
demo=val
export demo
直接定义
export demo=val
3 内置变量:
$0 获取当前脚本的名称
$# 获取当前脚本的参数个数
$n 获取当前脚本第n个参数
$? 获取上一次命令的执行情况 0代表成功
$$ 获取脚本运行时候的进程pid
[email protected] 获取当前脚本的参数列表
$* 获取当前脚本所有参数的字符串表示
字符串截取:
new_str=$(str:start:length)
将str从start开始截取length个
new_str=$(str:0-length)
将str从结尾截取length个长度
默认值:
var_name=$1 #取当前脚本的第一个参数
#如果没有var_name 就赋值为default
var_new=${var_name:-default}
var_name=$1 #取当前脚本第一个参数
# 不论var_name是什么都强制赋值为default
var_new=${var_name:+default}
3.4 查看变量的方法:
1 $变量名
私下使用
2 "$变量名"
调用变量时使用
3 "${变量名}"
脚本中使用
4 变量操作:
1 声明只读
readonly 变量名
2 删除变量
unset 变量名
4 shell验证操作:
方式1: [ 表达式 ] 表达式两侧需要有空格
[ 1 -eq 1 ] # 1是否和1相等
echo $? # 查看上一句执行结果
方式2: test 表达式
test 1 -eq 1 # 查看1是否和1相等
echo $? # 查看上一句执行结果
4.1 逻辑:
并 && 命令1 && 命令2 如果命令1执行成功 就执行命令2
命令1 执行失败 就不执行命令2
非 || 命令1 || 命令2 如果命令1执行成功 不执行命令2
命令1执行失败 执行命令2
4.2 文件表达式:
[文件表达式 文件名]
-e 是否存在
-f 是否是文件
-d 是否是目录
-r 是否可读
-w 是否可写
4.3 数字比较:
[n1 -gt n2] n1是否大于n2
-gt 大于
-lt 小于
-eq 等于
-ne 不等于
4.4 字符串
== 是否相等
!= 是否不一致
-z 是否为0
-n 长度是否不为0
5 流程控制:
运算:
let n=n+1
或
n=$(($n+1))
单if分支:
if 条件
then 执行语句
fi
多if分支
if 条件
then 执行语句
elif 条件
then 执行语句
else 执行语句
fi
case多分支
case 值 in
值1)
执行语句
;;
值2)
执行语句
;;
esac
循环:
until 条件
do 执行语句
done
6 函数
定义函数:
func_name(){
函数体
}
调用函数:
func_name
有参数函数:
func_name(){
args = $n
}
调用:
func_name args1 args2
以上是关于shell基本语法的主要内容,如果未能解决你的问题,请参考以下文章