shell语法01
Linux中常见的shell脚本有很多种,常见的有:
Bourne Shell(/usr/bin/sh或/bin/sh)
Bourne Again Shell(/bin/bash)
C Shell(/usr/bin/csh)
K Shell(/usr/bin/ksh)
zsh
linux最常用的是bash,这里使用的是bash
建立bash子进程
bash
输入bash后,原来的进程会睡眠,进入子进程ctrl+d或exit退出
文件开头需要写#! /bin/bash,指明bash为脚本解释器。
注释和输出
单行注释:#
多行注释:
:<<a
a
其中a可以任意替换
输出:echo "hello xq"
运行方式
作为可执行文件
chmod +x test.sh # 授权
./test.sh # 当前路径执行
/home/gsd/test.sh #绝对路径执行
~/test.sh # 家目录下执行
用解释器执行
bash test.sh
变量
定义的三种方法:
name="xq"
name='xq'
name=xq
变量的使用
使用变量,需要加$,或者#{},{}是可选的,主要为了帮助解释器识别变量边界。
双引号和单引号区别
单引号中的内容会原样输出,不会执行、不会取变量;
双引号中的内容可以执行、可以取变量;
如:
name=xq
echo "$name hello"
xq hello
echo '$name hello,\"hh\"'
$name hello,\"hh\"
只读变量
使用readonly或者declare可以将变量变为只读。
name=xq
readonly name
declare -r name
name=dsa #报错,因为name只读
删除变量
unset name
echo $name #输出空行
变量类型
1.自定义变量(局部变量)
子进程不能访问的变量
2.环境变量(全局变量)
子进程可以访问的变量
自定义变量改成环境变量:
name=xq
export name
declare -x name # 方法二
环境变量改成自定义变量:
declare +x name
字符串操作
获取字符串长度:
echo ${#name} # 在${变量}的变量前加个#即可
提取子串:
name=abcde
echo ${name:1:2} #bc
expr命令:
expr 用stdout输出结果,1为真,0为假
expr两种输出方式:
echo $(expr ...)
echo `expr ...`
字符串表达式
$str要加引号,避免如str="ke qing",中间有空格,无法识别连续的字符串
求str长度:expr length "$str"
获取str子串,下标从1开始:expr substr "$str" index1 index2如获取index为2-3的子串:expr substr "$str" 2 3
任意单个字符在str最前面的位置,下标从1开始:expr index "$str" str02
如:str="hello world" 那么expr index "$str" awd 输出7
整数表达式 和 逻辑关系表达式
expr仅支持整数的运算
需要转义的:* 、() 、 > 、 <= 、| 、&
逻辑关系表达式 :| & <= >= != < >
|:如果第一个参数非空且非0,则返回第一个参数的值,否则返回第二个参数的值,但要求第二个参数的值也是非空或非0,否则返回0。如果第一个参数是非空或非0时,不会计算第二个参数。
$:如果两个参数都非空且非0,则返回第一个参数,否则返回0。如果第一个参为0或为空,则不会计算第二个参数。

浙公网安备 33010602011771号