当前位置:   article > 正文

Shell语言(一)_shell语言里 -p和-t的区别

shell语言里 -p和-t的区别

Shell是脚本语言,编辑库。
Shell中类非常多,Bash是所有的操作系统默认脚本语言。

(1)注释----#

#添加行注释,没有多行注释,只有单行注释
#输出了hello world
echo "hello world"
  • 1
  • 2
  • 3

(2)变量

变量定义:

  • 变量名称不需要加“ ” 符 号 , ”符号, ,表示取变量值
  • 变量名和“=”之间不许加空格(区别于其他语言)
  • 变量名首字母仅限"字母"(不分大小写)和"_"
  • 变量名中间不许有空格,标点符号等
#错误写法
name = "Tom"
#正确写法
name="Amy"
  • 1
  • 2
  • 3
  • 4
Name="Daenerys"
name="daenerys"
_name="daenerys"
__name="daenerys"
echo $Name
echo $name
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
#错误
na me="Amy"
na,me="Amy"
#正确
na_me="Amy"
  • 1
  • 2
  • 3
  • 4
  • 5

只读变量,常量

name="Hello"
readonly name

#以下代码报错
name="Hi"
  • 1
  • 2
  • 3
  • 4
  • 5

删除变量
语法:unset

name="Amy"
echo $name
unset name
echo $name
  • 1
  • 2
  • 3
  • 4

变量类型

  • 本地变量,作用域:整个进程
name="Amy"
  • 1
  • 局部变量,作用域:当前的代码片段
local name="Amy"
  • 1
  • 环境变量,作用域:当前shell进程以及子进程
export name="Amy"
  • 1
  • 位置变量,作用域:
#给脚本文件传参数 
./hello.sh Jeff 100 2
#表示脚本文件的名称
${0}
name=${1}
age=${2}
class=@{3}
echo "姓名:${name}   年龄:${age}   班级:${class}"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

${?},表示返回上一个命令执行状态返回值,0执行成功,1执行结果,2程序状态返回码。

echo ${0}
#打印结果0
echo ${?}
  • 1
  • 2
  • 3
echo ${0}
name = "My name"
#打印结果127
echo ${?} 
  • 1
  • 2
  • 3
  • 4

${#},表示参数个数
${*}表示参数列表
${@}参数列表
KaTeX parse error: Expected '}', got 'EOF' at end of input: {}当前shell进程的ID
${!}执行上一个指令PID

./hello.sh jack 20 男
echo $#
echo $*
echo $@
echo $$
echo $!
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
./hello.sh jack 20 男
echo ${#}
echo ${*}
echo ${@}
echo ${$}
echo ${!}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

字符串
单引号,双引号

name='Myname'
name="Myname"
  • 1
  • 2

字符串拼接

name="Andy"
age=100
gender="男"
info="${name} ${age} ${gender}" 
echo ${info}
  • 1
  • 2
  • 3
  • 4
  • 5
name="Andy"
age=100
gender="男"
info="姓名:"${name}"  年龄:"${age}" 性别:"${gender}"" 
echo ${info}
  • 1
  • 2
  • 3
  • 4
  • 5

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

name="Name"
echo ${#name}
  • 1
  • 2

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

name="I Have A Dream"
echo ${name:0:3}
echo ${name:3:3}
  • 1
  • 2
  • 3
name="I Have A Dream"
length=${#name}
echo${name:5:length-1}
echo${name:5:${#name}-1}
echo${name:5:length}
  • 1
  • 2
  • 3
  • 4
  • 5
name="I Have A Dream"
echo${name:5}
  • 1
  • 2
name="I Have A Dream"
echo${name:0:5}
  • 1
  • 2

字符串删除
语法一:${变量名#想要删除的字符串 正则表达式}
作用:从左边开始查找匹配

#下面删除不掉,因为从左边开始查找匹配
name="I have a dream"
result=${name#dream}
echo result
resul1t=${name#I}
echo result1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
#查找指定字符,查找到的第一个,并且删除该字符前面的所有字符
name="I have a dream"
resul1t=${name#*D}
resul1t=${name#*a}
  • 1
  • 2
  • 3
  • 4
#删除指定范围,从第一位开始删,删到指定位置
name="I have a dream"
resul1t=${name#I*D}
  • 1
  • 2
  • 3

语法二:${变量名##想要删除的字符串 正则表达式}
作用:从右边开始查找匹配,删除前面的所有

name="I have a dream"
result=${name##*a}
echo result
  • 1
  • 2
  • 3

语法三:${变量名%想要删除的字符串 正则表达式}
从右边第一个开始查找

name="I have a dream"
result${name%a}
echo result
  • 1
  • 2
  • 3
name="I have a dream"
result${name%m}
echo result

  • 1
  • 2
  • 3
  • 4
#查找指定字符第一个,并且删除前面所有,含自己
name="I have a dream"
result${name%h*}
result1${name%h*m}
echo result
echo result1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
#指定删除的范围
name="I have a dream"
result${name%a*m}
echo result
  • 1
  • 2
  • 3
  • 4

语法四:${变量名%%删除字符}

#查找指定字符最后一个,并且删除前面所有的字符(包含自己)
name="I have a dream"
result${name%%a*}
  • 1
  • 2
  • 3

总结:

#表示,从左边到右边查询删除
##表示,从右边到左边

%从右边删除到左边
%%左到右

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/154331
推荐阅读
相关标签
  

闽ICP备14008679号