声明!!!
学习视频来自B站UP主泷羽sec,如涉及侵权马上删除文章
视频链接:泷羽sec
笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负
# until循环
脚本代码:
i=0
until [ ! $i -lt 10 ]
doecho $i((i++))
done
脚本解释:
i=0
- 这行代码将变量
i
初始化为 0。
until [ ! $i -lt 10 ]
until
是一种 循环控制结构,与while
循环相似,但它会在条件表达式 不成立 时才执行循环体。即,循环会在条件为假时继续执行。- **
[ ! $i -lt 10 ]
**是条件测试。具体来说:$i
表示变量i
的值。-lt
是 Bash 中用于比较大小的算术操作符,表示“less than”(小于)。!
是逻辑非操作符,表示取反。因此,[ ! $i -lt 10 ]
意味着“如果i
不小于 10,则条件为真”。
- 这个表达式的逻辑是:当
i >= 10
时,[ ! $i -lt 10 ]
条件为真,循环结束。因此,until
循环会继续执行,直到i
达到 10。
doecho $i((i++))
done
do
和done
定义了循环体,即循环中要执行的代码。echo $i
会打印当前变量i
的值。((i++))
是一个 算术表达式,用于将i
的值增加 1。((i++))
等价于i=$((i+1))
,但它是更简洁的写法。
执行过程:
- 初始化
i=0
。 - 进入
until
循环,条件为[ ! $i -lt 10 ]
。此时i=0
,$i -lt 10
为真,因此取反后! $i -lt 10
为假,循环继续。 - 执行
echo $i
,输出当前的i
值(此时为 0)。 - 执行
((i++))
,i
增加 1,变为 1。 - 重复上述过程,直到
i
达到 10。 - 当
i
等于 10 时,条件[ ! $i -lt 10 ]
为真,循环结束。
运行结果:
case语句
脚本代码:
read -p "请您输入一个数值:" num
case $num in1)echo 您输入的数字是1;;2)echo 您输入的数字是2;;*)echo 您输入的是其他数字;;
esac
脚本解释:
-
读取用户输入:
read -p "请您输入一个数值:" num
read
是用于从用户输入中读取值的命令。-p
选项用于在用户输入之前显示提示信息。在这个脚本中,提示信息是"请您输入一个数值:"
。- 用户输入的内容将被存储在变量
num
中。
-
case
语句:case $num in
case
语句用于根据变量的值执行不同的代码块。这里它会检查num
的值,并根据值的不同执行相应的代码。
-
条件匹配:
-
第一个条件:
1) echo 您输入的数字是1 ;;
- 如果用户输入的数字是
1
,则执行echo 您输入的数字是1
,即输出您输入的数字是1
。 ;;
表示当前条件判断结束,脚本会跳出case
语句并继续执行脚本。
- 如果用户输入的数字是
-
第二个条件:
2) echo 您输入的数字是2 ;;
- 如果用户输入的数字是
2
,则执行echo 您输入的数字是2
,即输出您输入的数字是2
。 - 同样,
;;
结束当前分支,跳出case
语句。
- 如果用户输入的数字是
-
默认条件:
*) echo 您输入的是其他数字 ;;
*
是一个通配符,表示任何其他的输入(即不为1
或2
的情况)。如果用户输入的数字既不是1
也不是2
,则执行echo 您输入的是其他数字
,即输出您输入的是其他数字
。;;
结束当前分支,跳出case
语句。
-
-
结束
case
语句:esac
esac
是case
语句的结束标志,它是case
的倒写形式。表示条件判断的结束。
执行流程:
- 用户输入一个数字。
- 脚本通过**
case
**语句判断用户输入的数字,并执行相应的代码:- 如果用户输入的是
1
,输出您输入的数字是1
。 - 如果用户输入的是
2
,输出您输入的数字是2
。 - 如果用户输入的是其他数字,输出
您输入的是其他数字
。
- 如果用户输入的是
运行结果:
基本函数
脚本代码(1):
DemoFunc() {echo "hello world"
}
DemoFunc
脚本解释:
1. 函数定义:
DemoFunc() {
-
这行代码是定义一个名为
DemoFunc
的函数。()
括号表示这是一个函数的定义,而{}
中包含的是该函数的主体,也就是该函数在被调用时会执行的操作。 -
在 Bash 脚本中,函数定义的基本语法是:
function_name() {# 函数体 }
2. 输出语句:
echo "hello world"
echo
是一个常用的 Bash 命令,用来将文本输出到终端或标准输出。- 在这个函数体内,
echo "hello world"
会在函数被调用时打印出"hello world"
字符串。
3. 函数结束:
}
- 这行
}
表示函数定义的结束。
执行过程:
- 解析脚本时,Bash 会识别
DemoFunc
是一个函数,并且知道它的行为是输出 “hello world”。 - 如果脚本中包含对
DemoFunc
的调用,Bash 会跳转到函数定义处执行echo "hello world"
,从而输出字符串"hello world"
。
运行结果:
脚本代码(2):
DemoFunc() {echo "hello world"echo "My name is $1"
}
DemoFunc Sushiyi
脚本解释:
1. 函数定义:
DemoFunc() {
- 这一行定义了一个名为
DemoFunc
的函数。()
中没有列出参数,表示函数可以接受任意数量的参数。
2. 输出第一行:
echo "hello world"
- 这一行使用
echo
输出字符串"hello world"
,不依赖任何传入的参数。这个输出是固定的,每次调用函数时都会打印。
3. 输出第二行:
echo "My name is $1"
- 这一行输出**
"My name is $1"
,其中$1
**是脚本或函数传递给它的第一个参数。- 在 Bash 中,
$1
表示传递给脚本或函数的第一个参数。例如,如果我们在调用时传递了Sushiyi
,那么$1
就会被替换为Sushiyi
。 - 这个输出动态地显示传递给函数的第一个参数。
- 在 Bash 中,
4. 函数结束:
}
- 这行
}
表示DemoFunc
函数的定义结束。
5. 函数调用:
DemoFunc Sushiyi
-
这行代码调用了函数
DemoFunc
,并传递了一个参数**Sushiyi
**。在函数内部:- 第一个
echo
语句会输出"hello world"
。 - 第二个
echo
语句会输出"My name is Sushiyi"
,因为Sushiyi
被传递为$1
参数。
- 第一个
执行过程:
-
定义函数
DemoFunc
:函数体内定义了两条echo
命令,分别用于打印"hello world"
和"My name is \$1"
,其中\$1
是函数的第一个参数。 -
调用函数:通过
DemoFunc Sushiyi
调用函数,并传递了字符串Sushiyi
作为第一个参数($1
)。 -
执行
:在函数内部:
- 第一个
echo "hello world"
执行,输出"hello world"
。 - 第二个
echo "My name is $1"
执行,$1
被替换为传递给函数的参数Sushiyi
,因此输出"My name is Sushiyi"
。
- 第一个
运行结果:
脚本代码(3):
DemoFunc() {echo "hello world"echo "My name is $1,I'm $2 years old."
}
DemoFunc Sushiyi 20
脚本解释:
1. 定义函数 DemoFunc
:
DemoFunc() {echo "hello world"echo "My name is $1, I'm $2 years old."
}
DemoFunc()
是函数的定义,()
后面可以包含函数的参数,{}
中的部分是函数体。- 在函数体中有两条 **
echo
**命令:- 第一条
echo "hello world"
会输出hello world
。 - 第二条
echo "My name is $1, I'm $2 years old."
使用了$1
和$2
,这两个变量代表传给函数的第一个和第二个参数。
- 第一条
2. 调用函数 DemoFunc Sushiyi 20
:
DemoFunc Sushiyi 20
- 这里调用了 **
DemoFunc
**函数,并传入了两个参数:Sushiyi
:会传给函数的第一个参数$1
。20
:会传给函数的第二个参数$2
。
3. 执行结果:
假设你运行这个脚本,输出会是:
Copy Codehello world
My name is Sushiyi, I'm 20 years old.
解释:
hello world
是在函数体中的第一条echo
命令的输出。- 第二条
echo
命令会把传给函数的参数Sushiyi
和20
插入到字符串中,输出My name is Sushiyi, I'm 20 years old.
。
总结:
- 该脚本首先定义了一个函数
DemoFunc
,它接收两个参数。 - 函数通过
echo
输出一段带有这两个参数的字符串。 - 最后,脚本调用
DemoFunc
并传入实际参数Sushiyi
和20
,输出相应的内容。
运行结果:
hiyi, I’m 20 years old.
### 解释:- `hello world` 是在函数体中的第一条 `echo` 命令的输出。
- 第二条 `echo` 命令会把传给函数的参数 `Sushiyi` 和 `20` 插入到字符串中,输出 `My name is Sushiyi, I'm 20 years old.`。### 总结:- 该脚本首先定义了一个函数 `DemoFunc`,它接收两个参数。
- 函数通过 `echo` 输出一段带有这两个参数的字符串。
- 最后,脚本调用 `DemoFunc` 并传入实际参数 `Sushiyi` 和 `20`,输出相应的内容。## 运行结果:![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/938774797d2043189187665c2b8c37cb.png)