shell教程(脚本 运行 传递 )

这篇博客详细介绍了Shell脚本中的变量使用,包括定义与赋值,以及字符串操作如单引号、双引号的用法和字符串拼接。还深入讲解了数组的定义、读取和长度获取。此外,讨论了Shell中的注释、参数传递、运算符(如算术、关系、布尔、字符串和文件测试运算符)以及echo和printf命令的使用。博客还涵盖了流程控制(如if、for、while、until、case)和函数定义。通过实例展示了如何在Shell脚本中运用这些概念。
摘要由CSDN通过智能技术生成

Shell变量

定义变量时,变量名不加美元符号($,PHP语言中变量需要),如:

[root@localhost ~]# vim calculator.sh 
your_name="gongmeiting"
echo $your_name
~                 

注意,变量名和等号之间不能有空格
同时变量名首字母必须为字母
中间不能有空格可以使用下划线_
不能使用标点符号
不能使用bash里的关键字

除了显示地直接赋值,还可以用语句给变量赋值:

for file in `ls /etc`
[root@localhost ~]# vim ooo
[root@localhost ~]# ./ooo
-bash: ./ooo: 权限不够
[root@localhost ~]# chmod +x ooo
[root@localhost ~]# ./ooo
./ooo:行2: 语法错误: 未预期的文件结尾
[root@localhost ~]# 

以上语句将/etc下目录的文件名循环出来。

使用变量

使用一个定义过的变量,只要在变量名面前加一个美元符号就好

[root@localhost ~]# vim calculator.sh 
your_name="gongmeiting"
echo $your_name
echo ${your_name}
[root@localhost ~]# ./calculator.sh 
gongmeiting
gongmeiting

这里加花括号是为了帮助解释器识别变量的边界,推荐给所有变量加上花括号

shell 字符串

单引号
your_name='gongmeiting'

单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的
单引号中不能再有单引号,就算转译也没用

双引号
[root@localhost ~]# vim calculator.sh 
your_name='gongmeiting'
str="hello, I know your are \"$your_name\"!"
echo $str
[root@localhost ~]# ./calculator.sh 
hello, I know your are "gongmeiting"!
[root@localhost ~]# 

双引号里面可以有变量还可以有转义字符

拼接字符串

greeting

[root@localhost ~]# vim calculator.sh 
your_name="gongmeiting"
greeting="hello, "$your_name" !"
greeting_1="I know your are "$your_name"!"
echo $greeting $greeting_1
[root@localhost ~]# ./calculator.sh 
hello, gongmeiting ! I know your are gongmeiting!
获取字符串长度

[root@localhost ~]# vim calculator.sh 
string=",_!?/\'"
echo ${#string}
[root@localhost ~]# ./calculator.sh 
7
提取字符串
[root@localhost ~]# vim calculator.sh
string=",_!?/\'"
echo ${string:0:7}                  
[root@localhost ~]# ./calculator.sh 
,_!?/\'
查找字符串在第几位

包括空格

[root@localhost ~]# vim calculator.sh 
string="alibaba is a great company"
echo `expr index "$string" g`
[root@localhost ~]# ./calculator.sh 
14
shell 数组

数组元素的下标由0开始编号 其值大于等于0

定义数组

括号表示数组空格表示分割
@表示展示所有的数组

数组名=(值1 值2 值3 ...值n)
例如
[root@localhost ~]# vim calculator.sh
array_name=(sb1 bb2 cc3 dd4 ee5)
echo ${array_name[@]}   
[root@localhost ~]# ./calculator.sh 
sb1 bb2 cc3 dd4 ee5 
            
或者
[root@localhost ~]# vim calculator.sh 
array_name=(
sb1
bb2
cc3
dd4
ee5)
echo ${array_name[@]}
[root@localhost ~]# ./calculator.sh 
sb1 bb2 cc3 dd4 ee5

还可以单独定义数组的各个分量
[root@localhost ~]# vim calculator.sh 
array_name[0]=aa
array_name[1]=bb
array_name[2]=cc
echo ${array_name[@]}
[root@localhost ~]# ./calculator.sh 
aa bb cc
读取数组

[n]表示第几个数组,从0开始。

读取数组元素值的一般格式:
 value=${array_name[n]}

例如
[root@localhost ~]# vim calculator.sh 
array_name[0]=aa
array_name[1]=bb
array_name[2]=cc
value=${array_name[1]}
echo $value
[root@localhost ~]# ./calculator.sh 
bb

使用@符号可以获取数组中的所有元素:
echo ${array_name[@]}

例子
[root@localhost ~]# vim calculator.sh 
array_name[0]=aa
array_name[1]=bb
array_name[2]=cc
echo ${array_name[@]}
[root@localhost ~]# ./calculator.sh 
aa bb cc

获取数组的长度(个数)
取得数组元素的个数
length=${#array_name[@]}

例子
[root@localhost ~]# vim calculator.sh 
array_name[0]=aa
array_name[1]=bb
array_name[2]=cc
length=${#array_name[@]}
echo $length
[root@localhost ~]# ./calculator.sh 
3                          

或者
length=${#array_name[*]}

[root@bogon ~]# vim calculator.sh 
array_name[0]=aa
array_name[1]=bb
array_name[2]=cc
length=${#array_name[*]}
echo $length
[root@bogon ~]# ./calculator.sh 
3

取得数组单个元素的长度
lengthn=${#array_name[n]}

[root@bogon ~]# vim calculator.sh
array_name[0]=aa
array_name[1]=bbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
array_name[2]=cc
length=${#array_name[1]}
echo $length
[root@bogon ~]# ./calculator.sh 
34
shell 注释

#就代表注释
在这里插入图片描述
在这里插入图片描述

shell 传递参数

Shell 传递参数

我们可以在执行shell脚本时,向脚本传递参数,脚本内获取参数的格式为:$n
n代表一个数字,1为执行脚本的第一个参数,2为执行脚本的第二个参数,以此类推…

实例

以下实例我们向脚本传递三个参数,并分别输出,其中$0为执行的文件名

[root@localhost ~]# vim calculator.sh 
#!/bin/bash
echo "Shell 传递参数实例!";
echo "执行的文件名:$0";
echo "第一个参数为:$1";
echo "第二个参数为:$2";
echo "第三个参数为:$3";
[root@localhost ~]# ./calculator.sh
Shell 传递参数实例!
执行的文件名:./calculator.sh
第一个参数为:
第二个参数为:
第三个参数为:
[root@localhost ~]# ./calculator.sh a aa aaa
Shell 传递参数实例!
执行的文件名:./calculator.sh
第一个参数为:a
第二个参数为:aa
第三个参数为:aaa

另外,还有几个特殊字符用来处理参数:

$#	传递到脚本的参数个数
$*	以一个单字符串显示所有向脚本传递的参数。
如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
$$	脚本运行的当前进程ID号
$!	后台运行的最后一个进程的ID号
$@	与$*相同,但是使用时加引号,并在引号中返回每个参数。
如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
$-	显示Shell使用的当前选项,与set命令功能相同。
$?	显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误

$# 和 $*的应用 (注意有空格)

[root@localhost ~]# vim a.sh
#!/bin/bash
echo "Shell 传递参数实例 !";
echo "第一个参数为:$1";
echo "参数个数为:$#";
echo "传递参数作为一个字符串显示&
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值