Shell笔记(1)
变量
1、变量类型
- 局部变量:在命令或脚本中定义,不能在其他程序访问。
- 环境变量:所有程序都能访问环境变量,必要时,shell脚本可以定义变量。
- shell变量:shell程序设置的特殊变量。可以是前两者。
2、变量命名规则
-
变量名与等号之间不能有空格
1、命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。 2、中间不能有空格,可以使用下划线 _。 3、不能使用标点符号。 4、不能使用bash里的关键字(可用help命令查看保留关键字)。 -
变量赋值方法:
1、显式赋值: yourName="haha" 2、使用语句赋值:列出/etc 下文件名 for file in `ls /etc` for file in $(ls /etc)
3、使用变量
1、使用时加上 ${Var} 即可 例子: ${yourName} 2、定义过的变量可以重新赋值
4、Shell 字符串
1、单引号 单引号里面的任何字符都会原样输出。转义符也没用。就是说单引号里面没有变量。都是字符串。 str='heihei' 2、双引号 双引号里面可以有变量,可以出现转义字符。 例子: your_name="qinjx" * greeting="hello, "$your_name" !" greeting_1="hello, ${your_name} !" echo $greeting $greeting_1 上面* 的也正常输出。""不仅里面有变量,还可以对里面的双引号套娃理解。 运行shell脚本的两种方法: ./scriptName.sh /bin/sh scriptName.sh 作为解释器参数运行
5、字符串操作
1、获取字符串长度: echo ${#strName} 2、提取字串:echo ${strName:1:4} 3、查找子字符串:String="alibaba is a great company" echo `expr index "$string" is` 注意使用的时 反引号 里面的双引号 * 含有指令的赋值,要用 `` 括起来 上面的 输出是 6
6、Shell 数组变量
-
bash shell 只支持一维数组,下表从0开始
-
数组元素用 空格或者换行 分开
集中定义:array_name=(value0 value1 value2) 单独定义:array_name[0]=val0 -
数组操作:
1、获取数组的元素: 单个:${array_anme[0]} 全部:${array_name[@]} 2、数组长度: 总长度:${#array_name[@]} ${#array_name[*]} 单个元素长度: ${#array_name[n]}
7、Shell 注释
只能单行注释 或者 {} q
参数传递
Shell 传递参数
-
执行脚本时,可以在命令后面添加参数。脚本内获取参数的格式为: $n n从0开始
-
$0 是文件名,实际参数还是从 1 开始
echo "Shell 传递参数实例!"; echo "执行的文件名:$0"; echo "第一个参数为:$1"; 要添加执行权限 $ chmod +x test.sh $ ./test.sh 1 2 3 Shell 传递参数实例! 执行的文件名:test.sh 第一个参数为:1
1、参数处理符号
参数处理 | 说明 |
---|---|
$# | 传递到脚本的参数个数 |
*"用「"」括起来的情况、以"2 … $n"的形式输出所有参数。 | |
$$ | 脚本运行的当前进程 ID |
$! | 后台运行的最后一个进程的 ID |
* 相同,但是使用时加"" ,并在引号中显示参数。如"1" "n" 的形式输出所有参数。 | |
$- | 显示shell使用的当前选项,与 set 命令相同 |
$? | 显示命令最后退出状态。0表示没有错误 |
2、 @的区别
只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)。 *相当于传递了一个参数,@相当于多个
for i in "$*"; do echo $i done 输出:val0 val1 val2 ------------------------------------- for i in "$@"; do echo $i done 输出: val0 val1 val2
数组
Shell 数组
- bash 数组只能是一维数组,初始化时不需要定义数组大小
- 下表从 0 开始
- 用()表示,中间用空格或者换行分开
1、数组的@
效果一直,不会换行。参数会换行。其他请参照shell 变量那一节操作。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具