shell脚本的那点小事儿--shell初认识(一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_27339239/article/details/82622312

1.第一个shell脚本
1.1创建一个shell脚本
touch xxx.sh
标配格式

#!/bin/bash ->这一行是标准头部,不可以去掉
echo "hello world!"

1.2.mac终端查看文件

ls -l hello.sh
e.g:-rw-r--r--@ 1 avalanching  staff  32  8 30 16:58 hello.sh

.mac终端修改文件权限
修改为可执行的

chmod +x ./hello.sh

1.4.mac终端执行Shell脚本文件

./hello.sh

2.shell脚本基本语法
2.1 # ->注释, 在shell脚本中只有单行注释

# 这是一行注释

2.2 定义变量

  • 注意a:请不要添加$作为前缀,$$为取值符号
  • 注意b:变量名和等号之间不能加入空格
  • 注意c:变量名前缀必须是字母或下划线
  • 注意d:变量名中间不能穿插标点符号和空格
name="smile 2017"

2.3 定义只读变量 关键之readonly

name="我是只读的"
readonly name

2.4 删除变量 (shell脚本因为错误而停止执行)

#!/bin/bash
name="Andy"
#输出变量
echo $name
#删除变量
unset name
#删除变量
echo $name
echo "执行了"

2.5基本的变量类型
a.类型一:本地变量 作用域为整个bash进程
语法:name=”Dream”
b.类型二:局部代码 作用域为本地的代码段(修饰符local)
语法:local name=”Andy”
c.类型三:环境变量 作用域当前的shell进程以及shell的子进程(修饰符export)
语法:export name=”Andy”
d.类型四:位置变量 获取传入的参数

#!/bin/bash
filename=${0}
name=${1}
age=${2}
sex=${3}
echo "脚本名称:${filename} 姓名:${name} 年龄:${age} 性别:${sex}"

调用的指令:

/hello.sh Andy 190

e.类型五:特殊变量

  • ${0} -> 获取文件的名称
  • ${?} -> 返回上一个命令执行的状态的返回值

value:

  • 0:执行成功 1:执行返回的结果
  • 2:表示状态码(0-255)
  • $# ->参数个数
  • $* ->参数列表 所有的参数组成一个字符串
  • $@ ->参数列表 参数单一存在
  • ${$} ->当前shell的进程ID
  • ${!} ->上一个shell的进程ID

3.Shell的字符串
3.1 字符串中的单引号

#!/bin/bash
name='Andy'
echo $name

3.2 字符串的双引号

#!/bin/bash
name="Andy"
echo $name

3.3字符串的拼接
a)

#!/bin/bash
name='Andy'
age=100
sex="男"
info="${name}@{age}@{sex}"
echo $info

b)

#!/bin/bash
name='Andy'
age=100
sex="男"
info="姓名:"${name}" 年龄:"@{age}" 性别:"@{sex}""
echo ${info}

3.4获取字符串的长度:
语法:${#变量名称}

#!/bin/bash
string="Andy"
echo ${#string}

3.5字符串截取
1.语法:${变量名:开始位置:截取长度}
2.语法:

#!/bin/bash
string="I have a dream"
echo ${string:3:5}

lenght = ${#string} - 1
echo ${string:2:lenght}

echo ${string:2}

3.6 删除字符串
语法一:${变量名#要删除的字符串 正则表达式}
作用:从字符串的开头开始匹配,删除

#!/bin/bash
string="I have a dream dd"
result=${string#I}
echo $result

result=${string#*d}
echo $result

result=${string#h*d}
echo $result

语法二:${变量名##要删除的字符串正则表达式}
作用:从字符串的尾部开始匹配 往前面删除

#!/bin/bash
string="I have a dream dd"
result=${string##I}
echo $result

result=${string##*d}
echo $result

语法三:${变量名%要删除的字符串正则表达式}
作用:从字符串的尾部开始匹配,删除

#!/bin/bash
string="I have a dream dda"
result=${string%d}
echo $result

result=${string%d*}
echo $result

语法三:${变量名%%要删除的字符串正则表达式} 查询方向逆转

#!/bin/bash
string="I have a dream dda"
result=${string%%d}
echo $result

result=${string%%d*}
echo $result

3.7总结
#表示从左边往右边删除,查询方向为从左边到右边
##表示从左边往右边删除,查询方向为从右边到左边

%表示从右边往左边删除,查询方向为从左边到右边
%%表示从右边往左边删除,查询方向为从右边到左边

猜你喜欢

转载自blog.csdn.net/qq_27339239/article/details/82622312