美文网首页
二,shell脚本初体验

二,shell脚本初体验

作者: 木子心语 | 来源:发表于2019-12-07 01:30 被阅读0次

1.Shell

Shell

shell初体验

  • 第一个shell程序:shell.sh (输出hello world!)

1.编写shell脚本

#!/bin/bash
echo "Hello world!"

2.脚本授权

chmod +x shell.sh

3.执行脚本

sh shell.sh

4.执行结果

第一个shell脚本

5.我们的第一个shell脚本完成,非常简单.

Shell

Shell是一个用C语言编写的程序,它是用户使用Linux的桥梁.
Shell既是一种命令语言,又是一种程序设计语言.
Shell是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问系统内核的服务.

第一个shell脚本

我们来创建第一个shell脚本,打开你的文本编辑器,文件命名为shell.sh(扩展名为sh,sh代表shell),扩展名并不影响脚步执行.

shell.sh.png

然后我们在文本编辑中写入代码

Hello world.png

这里的#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell.
echo命令用于向窗口输出文本.

接下来,
我执行一下shell脚本
我们cd到相应目录:
chmod + x ./shell.sh #使脚本具有执行权限(或者 chmod 777 shell.sh)
./shell.sh #执行脚本

运行shell.png

如果你会了shell输出,恭喜您已经学会了半个shell编程了.

注释

# 表示注释

例如:
       #!/bin/bash
       #输出了Hello world!
       echo "Hello world"

在shell脚本中,没有多行注释,只有单行注释

变量

  • 变量名和等号不能够有空格(和我们的一般语言不一样)
name = "niihao2017"
echo $name
#报错:./hello.sh: line l: name: command not found

name="niihao2017"
echo $name
niihao2017
  • 变量名首字母必需是字母+下划线也可以(a-z,A-Z)
age=100
_age=200
echo $age
echo $_age
echo "执行了"

200
100
执行了
  • 变量名中间不允许有空格
ag e=100
echo $ag e
echo "执行了"

./shell.sh: line 22: ag: command not found
e
执行了
  • 不允许变量名使用标点符号
na,me="niihao2017"
echo $na,me
echo "执行了"

./shell.sh: line 26: na,me=niihao2017: command not found
,me
执行了
  • 只读变量(类似于通常所讲解常量)
name="Hello"
readonly name
name="niihao2017"
echo "执行了"

./shell.sh: line 33: name: readonly variable
执行了
  • 删除变量(unset)
name="tom"
#输出变量值
echo $name
#删除变量
unset name
echo $name
echo "执行了"

tom

执行了
  • 位置变量
#给我们脚本文件传递参数
#文件名称
filename=$(0)
echo "文件名称: ${filename}"
#参数一
name=${1}
#参数二
age=${2}
#参数三
sex=${3}
echo "文件名称: ${filename}"
echo "姓名: ${name} 年龄: ${age} 性别: ${sex}"
  • 特殊变量
echo ${0}
name = "LK"
echo ${?}

./shell.sh
./shell.sh: line 64: name: command not found
127
${#}->参数个数
echo ${#}

${*}->参数列表
echo ${*}

${@}->参数列表
echo ${@}

$$->当前shell进程ID
echo ${$}

$!->执行上一个指令进程ID(process id)
echo ${!}

字符串

  • 字符串->单引号
name = 'tom'
echo ${name}

tom
  • 字符串->双引号
name="tom"
echo ${name}

tom
  • 字符串->拼接
#方式一
name="tom"
age=100
sex='男'
info="${name} ${age} ${sex}"
echo ${info}

tom 100 男
#方式二
name="tom"
age=100
sex="男"
info="姓名:"${name}" 年龄:"${age}" 性别:"${sex}" "
echo ${info}

姓名:tom 年龄:100 性别:男
  • 字符串->截取字符串长度
name = "tom"
echo ${#name}
  • 字符串->截取
#语法:${变量名:开始位置:截取长度}
#案例一:从字符串第3个开始截取,截取3个
name="I have a Dream"
result=${name:2:3}
echo ${result}

hav
#案例二:从字符串第5个开始截取,到最后一个结束
#方式一
name = "I have a Dream"
length=${#name}
result=${name:5:length-1}
result=${name:5:${#name}-1}
result=${name:5:${#name}}
echo ${result}
#案例三:0--5截取
name="I have a Dream"
result=${name:5}
echo ${result}

e a Dream
  • 字符串->删除
#语法一:${变量名#删除字符串 正则表达式}
#从左边开始检查
#案例一
name="I have a Dream"
result=${name#Dream}
#结果: 匹配不到
echo ${result}}
#案例二
name="I have a Dream"
result=${name#I}
echo ${result}}
#案例三:查找指定字符第一个,并且删除前面所有的字符(包含自己)
name="I have a Dream"
result=${name#*a}
echo ${result}
#案例四:指定删除范围(第一个开始删除,删除到哪里)
name="I have a Dream"
result=${name#I*D}
echo ${result}
#语法二:${变量名##删除字符串 正则表达式}
#从右边开始检查
#作用:从字符串结尾(右边)开始匹配要删除字符串
name="I have a Dream"
result=${name##*a}
echo ${result}
#语法三:${变量名%删除字符串 正则表达式}
#案例一:查找第一个字符
#代码一
#查找不到
name="I have a Dream"
result=${name%a}
echo ${result}
#代码二
#查到了
name="I have a Dream"
result=${name%m}
echo ${result}

I have a Drea
#案例二:查找指定字符第一个,并且删除前面所有字符(包含自己)
name="I have a Dream"
result=${name%h*}
echo ${result}

I
#案例三:指定删除范围
name="I have a Dream"
result=${name%v*r}
echo ${result}
#语法四: ${变量名%%删除字符串 正则表达式}
#案例一:查找指定字符串最后一个,并且删除前面所有的字符(包含自己)
name="I have a Dream"
result=${name%%a*}
echo ${result}

相关文章

网友评论

      本文标题:二,shell脚本初体验

      本文链接:https://www.haomeiwen.com/subject/erfrpxtx.html