2、shell变量
目录
shell变量
1、变量的命名规则
以字母或下划线开头,组合的数字、字母、下划线,中间不能有空格,但可以有下划线。
1.1、正确的命名:
var var2 _var var_a2
1.2、错误的命名
?var=123 user*name=var
1.3、隐式命名
for file in `ls /etc` 或 for file in $(ls /etc)
1.4、使用变量
根据定义的变量名如var
,用美元符使用变量$var
your_name="qinjx" echo $your_name echo ${your_name}
变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,比如下面这种情况:
for skill in Ada Coffe Action Java; do echo "I am good at ${skill}Script" done
1.5、只读变量
一下只读变量重新赋值会报错。
varUrl = 'www.baidu.com' readonly varUrl varUrl = 'www.me.com'
1.6、删除变量
使用unset
unset varUrl
被删除的变量不能够再次使用
#!/bin/sh myUrl="https://www.baidu.com" unset myUrl echo $myUrl
以上没有任何输出
1.7、变量类型
运行shell时,会同时存在三种变量:
-
1) 局部变量 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
-
2) 环境变量 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
-
3) shell变量 shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行
2、字符串
字符串是最常见的变量,有分单引号和双引号字符变量。
2.1、单引号变量
原样数据变量
my_var = '$year baidu.com'
1、单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
2、单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。
2.2、双引号变量
your_name="baidu" str="Hello, I know you are \"$your_name\"! \n" echo -e $str
输出结果为:
Hello, I know you are "baidu"!
特点:
可以有变量,可以出现转义字符
2.3、拼接字符
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} !
2.4、获取字符串长度
string="abcd" echo ${#string} # 输出 4
2.5、提取子字符串
string="runoob is a great site" echo ${string:1:4} # 输出 unoo
2.6、查找子字符串
查找字符 i 或 o 的位置(哪个字母先出现就计算哪个):
string="runoob is a great site" echo `expr index "$string" io` # 输出 4
注意: 以上脚本中 ` 是反引号,而不是单引号 ',不要看错了哦。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· Open-Sora 2.0 重磅开源!