shell教程学习记录1 2023/06/13

一、 如何执行

1. 使用的执行语

#!是一个约定,表示用哪种语言来执行之后的命令行
#使用bash shell
#!/bin/bash
#使用python
#!/bin/python

2. 运行可执行程序

①可执行程序

#执行脚本
./name.sh
#给予脚本执行权限    
chmod +x ./name.sh

②解释器参数

直接运行解释器,权限直接给足

#shell语言
/bin/sh name.sh
#php语言
/bin/php name.php

二、 shell变量

1. 变量名标准

只能由英文、下划线、数字组成(跟其他语言一样)

不能用bash里的关键字,会造成识别失败问题

2. 变量类型

局部变量:仅在当前实例有用,换个环境换个实例就用不了了,包括子shell,实例结束随之销毁。

环境变量:所有程序都可以调用,必要情况下可以自行定义。

本地变量:对当前shell包括它的子shell有效,但出了这个shell就没用了。

3. 一般变量赋值

①语句赋值(少用)

for name in NAME
OR
for name in $(NAME)
例如: for 羊名 in 喜羊羊 美羊羊 沸羊羊

②双引号

🐏="美羊羊"

3. 输出变量

yang="meiyangyang"
[@localhost ~]$ echo $yang
meiyangyang
[@localhost ~]$ echo ${yang}
meiyangyang
[@localhost ~]$ for yang in xiyangyang meiyangyang
> echo $yang
bash: 未预期的符号 `echo' 附近有语法错误
[@localhost ~]$ echo ${yang}
meiyangyang

需要注意的是,当使用语句赋值时,如果中间有空格,只使用echo $name会造成语法错误,使用echo ${name}只能输出最后一个空格后的内容,想要输出全部可以使用以下语句

for yang in xiyangyang meiyangyang feiyangyang;
> do
> echo ${yang}     或   echo $yang
> done
xiyangyang
meiyangyang
feiyangyang

此时无论是$或者是${}都可以使用

4. 修改变量权限以及改为环境变量

#设置变量 喜羊羊 仅可读
readonly 喜羊羊
#直接定义环境变量
export  🐏=喜羊羊
#或者
declare -x 🐏=喜羊羊

#修改局部变量为环境变量
export 🐏

5. 查看变量和取消变量

#查看变量(可以查看局部和环境)
set
#取消变量
unset 🐏

三、字符串   


1. 字符串单引号和双引号的区别

  • 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
  • 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。
  • 双引号里可以有变量
  • 双引号里可以出现转义字符\"
[@localhost ~]$ yang="xiyangyang"
[@localhost ~]$ str1='my name is $yang'
[@localhost ~]$ str2='my name is '$yang''
[@localhost ~]$ str3="my name is $yang"
[@localhost ~]$ str4="my name is "$yang""
[@localhost ~]$ echo $str1 $str2 $str3 $str4
my name is $yang my name is xiyangyang my name is xiyangyang my name is xiyangyang

2. 字符串操作 

#获取字符串长度

echo ${#🐏}

切片字符串

#字符串切片,下面例子是从第2个字符到第6个字符,字符起始编码为0

${🐏:1:5}

#从某个位置开始截取,例如第7个字符开始截取

${🐏:6}
#截取最后一个字符
${🐏:(-1)}
#截取最后3个字符中的前两个
${🐏:(-3):2}

#查找字符串   查找字符 i 或 o 的位置(哪个字母先出现就计算哪个)

echo `expr index "$🐏" io` 

替换字符串 

将遇到的第一个符合字符替换(沸羊羊替代喜羊羊上位)

${🐏/喜羊羊/沸羊羊}

将所有符合字符替换(沸羊羊成功上位✌)两个正斜杠 

${🐏//喜羊羊/沸羊羊}

字符串截取 

按匹配删除

删除前边匹配,一个#删除最前面一个,##全部匹配删除

[@localhost ~]$ echo $abc
abcabcabcdefabc
[@localhost ~]$ echo ${abc#*b}
cabcabcdefabc
[@localhost ~]$ echo ${abc##*b}
c

 删除后边匹配,一个%删除最后面一个,%%全部匹配删除

[@localhost ~]$ echo ${abc%c*}
abcabcabcdefab
[@localhost ~]$ echo ${abc%%c*}
ab

 变量状态赋值

#🐏为空返回kong
${🐏:-'kong'}
#🐏不为空返回咩
${🐏:+'咩'}
#🐏为空重新赋值美羊羊
${🐏:='美羊羊'}
#🐏为空就将kong信息输出到stderr
${🐏:?'kong'}

四、数组

1. 定义及输出数组

定义数组如下图两种方式

array=(value0 value1)

array[num]=valuenum

[@localhost ~]$ array=(0 1 2)
[@localhost ~]$ echo $array[@]
0[@]
[@localhost ~]$ echo ${array[@]}
0 1 2
[@localhost ~]$ array[3]=3
[@localhost ~]$ echo ${array[@]}
0 1 2 3

输出数组时必须使用${}格式,否则会跟上面一样只输出数组第一个

2. 获取数组长度 

#获得单个元素的长度
length=${#array[n]}
#获得数组元素的个数
length=${#array[@]}
#或者
length=${#array[*]}

3.输出全部键值 

#获得数组元素键值
length=${!array[@]}
#或者
length=${!array[*]}

4. 关联数组

declare -A array      A用于声明为关联数组 

declare -A site=(["google"]="www.google.com" ["runoob"]="www.runoob.com" ["taobao"]="www.taobao.com")
#或者
declare -A site
site["google"]="www.google.com"
site["runoob"]="www.runoob.com"
site["taobao"]="www.taobao.com"

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值