shell常见语法

介绍:shell是一个命令行解释器,通过接收应用程序/用户命令,调用操作系统内核。

1.创建一个sh脚本并进行编辑  
touch b.sh  
vim b.sh

2.开头指定解析器并写入内容  
#!/bin/bash  
echo "hello"

3.赋予脚本执行权限并执行
chmod +x b.sh  
./b.sh (打开一个子shell)  
. b.sh (在当前shell里执行,无需打开子shell)
子shell设置的变量,父shell不可见  

4.查看系统变量的值  
echo $ HOME  

5.自定义变量  
变量名=变量值(=前后不可有空格)  
撤销变量:unset 变量名  
静态变量: readonly 变量名(不可unset)  
定义临时全局变量:export 变量名  
  
6.定义规则  
(1)不能以数字开头  
(2)环境变量建议大写  
(3)等号左右不能有空格  
(4)如果有空格,需要单引号或者双引号
(5)变量值默认都是字符串,不能直接数值计算  

7.特殊变量  
$n  
n:0表示脚本名称(如果没有创建子shell就会显示bash),1-9表示第1-9个参数,如果n>9,需要加花括号:${10}  

8.参数变量  
$*:代表命令行中所有参数,把所有参数看做了整体(具体指for i in "$*"这种情况)  
$@:代表命令行中所有参数,把每个参数区分对待  

9.判断执行最后一次命令的状态  
$?:如果返回0,说明上一次命令正确执行,不为0的话(可以自己定义)上一条命令没有被正确执行  
  
10.运算符  
O=$[5*5+6]  

11.条件判断  
[ condition ]:如果condition非空也为true,注意condition前后要有空格  
[ 7 -eq 7 ]  \  echo $?    输出为0    
多条件判断: [ fly ] && echo hello || echo haha
![](https://img2024.cnblogs.com/blog/2679751/202401/2679751-20240127204900735-1923444669.png)
  

12.流程控制    
(1)  
if [ condition ]
then
    程序
elif [ condition ]
then
    程序
else
    程序
fi
if后面的空格不可以少,有if才有then  

(2)  
case $n in
"值1")
    程序
;;
"值2")
    程序
;;
*)
    程序
;;
esac  
case那行要以in结尾,;;代表一个条件的结束,*代表默认default  

(3) 
sum=0
for ((i=0;i<4;i++))
do
    sum=$[$sum+$i]
done  

for 变量 in 值1 值2 值3
do
    程序
done  

(4)  
while [ condition ]
do
    程序
done  

13.读取控制台输入
read -t n(等待读取的时间,不写则一直等待) -p "enter anything" o  
echo $o  

14.取路径里的文件名称  
basename 路径名 suffix(想要去掉的后缀)  
basename $0 .sh      输出:a  

15.取绝对路径  
dirname 文件绝对路径  

16.自定义函数  
funciton 函数名(){
    函数体
}  

17.正则表达式  
^a:匹配以a开头的所有行  
a$:匹配以a结尾的所有行  
.:匹配任意一个字符  
a*:后面有任意多个a  
[1,2]:匹配1或者2  
[1-9]:匹配1-9中的数字  
'\$':匹配$(要用单引号括起来)  

18.文本处理工具  
(1)cut -d " "(选定分隔符,默认为制表符"\t") -f n(选定第n列) 文件名      
从文件中以空格为分隔符切割出第n列的内容  
(2)awk -F " "(选定分隔符,默认为空格) -v i=1(赋值一个用户定义变量) '/pattern1/{action1} /pattern2/{action2}...' 文件名  
内置变量:FILENAME(文件名),NR(行数),NF(列数)
BEGIN和END:在首行和末行添加内容  

B站教程:3天搞定Linux,1天搞定Shell

你可能感兴趣的:(后端开发,bash)