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、查找子字符串

查找字符 io 的位置(哪个字母先出现就计算哪个):

string="runoob is a great site"
echo `expr index "$string" io` # 输出 4

注意: 以上脚本中 ` 是反引号,而不是单引号 ',不要看错了哦。

posted @   站着说话不腰疼  阅读(95)  评论(0编辑  收藏  举报
编辑推荐:
· 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 重磅开源!
点击右上角即可分享
微信分享提示