第八周学习总结
本周开始大数据的学习。
执行Shell脚本主要有两种方式:
#第一种: #使用chmod命令,给脚本添加可执行权限 chmod +x ./hello.sh #执行脚本 ./hello.sh
#第二种:作为解释器的参数运行脚本呢 /bin/bash hello.sh #或者 /bin/sh hello.sh
ps:使用第二种方式就不需要在脚本的第一行标记使用的解释器了
以 # 开头的行就是注释,会被解释器忽略。
shell变量的命名(变量名=值)
- 赋值“=”号两边不能有空格;
- 命名只能使用字母、数字、下划线且不能以数字开头;
- 不能使用标点符号;
- 不能使用bash中的关键字。
2.2 变量的使用
除了显式的标量赋值,还可以通过语句进行赋值,例如:
for file in `ls /etc` 或 for file in $(ls /etc)
循环遍历 /etc目录下的文件名。
ps:在shell中,"$" 和"`"(反引号,引用系统命令,包含的命令会被优先执行)的作用类似。
your_name="zhangsan" echo $your_name echo ${your_name}
使用"$"可以使用已经定义好的变量。花括号可用可不用,但为了代码的规范性,需要使用。即可以限定范围,代码也更具可读性。
myUrl="https://www.google.com" readonly myUrl
使用关键字 readonly 定义只读变量,则变量的值不能够改变。
myUrl="https://www.runoob.com" unset myUrl
使用关键字 unset 取消变量或函数的定义。
2.3 变量的类型
shell 中有四种类型的变量:用户自定义变量(局部变量)、环境变量、位置参数变量和预定义变量。
- 用户自定义变量:在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量;
- 环境变量:所有的程序,包括shell启动的程序,都能访问环境变量。当一个 shell 脚本程序开始执行时,一些变量会根据环境设置中的值进行初始化,这些变量通常用大写字母做名字,以便与用户自定义变量做区分,被称为环境变量。环境变量可以在当前 shell 和这个 shell 的所有子 shell 中生效。如果把环境变量写入相应的配置文件(如 /etc/profile ),那么这个环境变量就会在所有的 shell 中生效。系统自带的环境变量的名字不可更改,但是值可以按需更改。用户也可以使用 export 命令在 shell 中自己创建环境变量。
- 位置参数变量主要用来向脚本中传递参数或数据,变量名不能自定义,变量作用也是固定的。主要有以下几种位置参数变量:
- $1、$2、$3:脚本程序的参数,分别代表程序的第1个参数、第2个参数、... 程序第10个以上的参数需要用大括号包含,如 ${10};
- $*:代表命令行中的所有参数。在一个变量中将所有参数列出,各参数之间用环境变量 IFS 中的第一个字符分隔开;
- $@:和 $* 一样,也包含了命令行中的所有参数,使用时加引号,并在引号中返回每个参数,参数也是分开显示的;
- 区别:$* 将所有的参数视为一个整体,而 $@ 将所有的参数分别视为单独的个体。一般来说,采用 $@ 来访问脚本程序的参数会比较好,不必担心 IFS 所设置的分隔符为空而导致各参数连在一起分不清楚。
- 预定义变量是在 bash 中已经定义好了的变量,变量名不能自定义,变量作用也是固定的。实际上,位置参数变量就是预定义变量的一种。
- $?:保存最后一次执行的命令的返回状态。如果 $? 的值为 0 ,则表明上一个命令成功执行;如果值非 0 ,则表明上一个命令没有成功执行;
- $!:用于保存后运行的最后一个进程的 PID 号。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构