9.17学习笔记

发布于:2022-12-12 ⋅ 阅读:(661) ⋅ 点赞:(0)

shell脚本

Shell是一种解释型编程语言,不需要编译,执行时也是按行执行。

shell脚本通常以.sh作为后缀名,但不是必须的。

1、Shell第一行代码 #!/bin/bash 声明这个script使用的是shell解析器

#!/bin/bash

echo "Hello World"

(#!是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种shell

echo 命令用于向窗口输出文本)

2、运行shell脚本

<1>        chmod +x ./test.sh #使脚本具有执行权限

                ./test.sh #执行脚本

(注意,一定要写成 ./test.sh,而不是 test.sh,运行其它二进制的程序也一样,直接写 test.sh,linux 系统会去 PATH 里寻找有没有叫 test.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里,你的当前目录通常不在 PATH 里,所以写成 test.sh 是会找不到命令的,要用 ./test.sh 告诉系统说,就在当前目录找。)

<2>        作为解析器参数执行shell脚本(直接运行解析器,其他参数就是shell脚本的文件名)

        bash test.sh

  (这种运行方式运行,第一行不需要添加解释器信息,写了也没用)

3、定义变量

n="tom"

★变量名和等号之间不能有空格

★变量名不能含有bash里的关键字

4、使用变量

使用一个定义过的变量,只要在变量名前面加美元符号即可

name="aa"

echo $name

echo ${name}

echo "name:$name"

echo "name:{name}"

(变量名外面的花括号是可选的,加不加都可以,加花括号是为了帮助 解析器识别变量的边界)

例如

age=20

echo "aaa${age}aaa"

echo "aaa$ageaaa"

5、只读变量

使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。

#!/bin/bash

myUrl="https://www.baidu.com"

readonly myUrl

myUrl="https://www.google.com"

运行结果报错

6、删除变量

使用unset命令可以删除变量

unset 变量名

变量被删除后不能再次使用。unset命令不能删除只读变量

#!/bin/bash

myurl="www.baidu.com"

unset myurl

echo $myurl

运行之后不会有输出内容

7、shell字符串

<1>单引号

str='hello'

★单引号里面的任何字符都会原样输出,单引号字符串中的变量是无效的

★单引号子串中不能出现单独一个单引号,但可成对出现,作为字符串拼接使用

age=20

str='your age is ${age}'

echo $age

结果:your age is ${age}  (变量在双引号中会被解析,但在单引号中国不会解析)

<2>双引号

yourname="aaa"

str="Hello,I konw you are \"$yourname\"!\n"

echo -e $str   (-e:输出的时候,对内容启用转义)

双引号的优点:

★  双引号里可以有变量

★  双引号里面出现转义字符

8、拼接字符串

your_name="runoob"

# 使用双引号拼接

greeting="hello, "$your_name" !"

greeting_1="hello, ${your_name} !"

echo $greeting $greeting_1

# 使用单引号拼接

greeting_2='hello, '$your_name' !'

greeting_3='hello, ${your_name} !'

echo $greeting_2 $greeting_3

输出结果

hello, runoob ! hello, runoob !

hello, runoob ! hello, ${your_name} !

9、获取字符串长度

string="abcd"

echo ${#string}        # 输出4

变量维数组时,${#string}等价于${#string[0]}

string"abcd"

echo ${#string[0]}        #输出4

10、提取字符串

例:提取字符串第2到第4个字符

s="abcdefg"

echo ${s:1:4}

11、查找字符串

查找字符串i或a的位置(哪个字母先出现就计算哪个)

s="this is a cat"

echo `expr index "$s" ia `

结果输出3,返回的索引值从1开始计数

※   注意:以上脚本`是反引号,而不是单引号'。 

本文含有隐藏内容,请 开通VIP 后查看