Shell编程自动化之特殊变量、特殊状态变量和Shell子串

简介: 本文主要介绍了Shell编程自动化之特殊变量、特殊状态变量和Shell子串,并结合实例测试。

一、特殊变量

$0   获取shell脚本文件名,以及脚本路径
$n   获取shell脚本的第n个参数,n在1~9之间,如:$1,$2,大于9则需要写${10},参数用空格隔开。
$#   获取执行的shell脚本后面的参数总个数
$*   获取shell脚本所有的参数,不加引号等同于$@作用,加上引号"$*"作用是接收所有参数为单个字符串,"$1 $2..."
$@   不加引号,效果同上,加引号,是接收所有参数为独立字符串,如"$1" "$2" "$3" ...,空格保留

实例1:

test@VM-4-16-debian:~/shell$ cat test.sh
#!/bin/bash

echo "hello word"

echo "脚本文件名:$0"
echo "第一个参数: $1"
echo "第三个参数: $3"
echo "参数总个数: $#"

test@VM-4-16-debian:~/shell$ chmod 755 test.sh 

test@VM-4-16-debian:~/shell$ ./test.sh gao 10 20 30
hello word
脚本文件名:./test.sh
第一个参数: gao
第三个参数: 20
参数总个数: 4

实例2:

test@VM-4-16-debian:~/shell$ cat test1.sh 
#!/bin/bash

for var in "$*"
do 
        echo "$var"
done

echo "---------"

for var in "$@"
do 
        echo "$var"
done

test@VM-4-16-debian:~/shell$ chmod 755 test1.sh 

test@VM-4-16-debian:~/shell$ ./test1.sh ceshi 10 20 30
ceshi 10 20 30
---------
ceshi
10
20
30

二、特殊状态变量

$?   上一次命令执行状态返回值,0正确,非0失败
$$   当前shell脚本的进程号PID
$!   上一次后台进程的PID
$_   再次之前执行的命令,最后一个参数

三、shell子串用法

bash基础内置命令

echo   -n 不换行输出
       -e 解析字符串中的特殊符号
       \n 换行
       \r 回车
       \t 制表符 四个空格
       \b 退格
eval    执行多个命令
exec    不创建子进程,执行后续命令,且执行完毕后,自动exit

shell子串用法

${变量}                            返回变量值
${#变量}                           返回变量长度、字符长度
${变量:start}                      返回变量start数值之后的字符
${变量:start:length}              提取变量start之后的length限制的字符
${
   变量#word}                        从变量开头删除最短匹配的word字符串
${
   变量##word}                        从变量开头删除最长匹配的word字符串
${变量%word}                        从变量结尾删除最短匹配的word字符串
${变量%%word}                        从变量结尾删除最长匹配的word字符串
${变量/pattern/string}            用string代替第一个匹配的pattern
${变量//pattern/string}            用string代替所有匹配的pattern

实例1:

test@VM-4-16-debian:~/shell$ temp="helloworld"
test@VM-4-16-debian:~/shell$ echo ${temp}
helloworld
test@VM-4-16-debian:~/shell$ echo ${#temp}
10
test@VM-4-16-debian:~/shell$ echo ${temp:2}
lloworld
test@VM-4-16-debian:~/shell$ echo ${temp:2:5}
llowo

实例2:

test@VM-4-16-debian:~/shell$ string=abc12342341
test@VM-4-16-debian:~/shell$ echo ${
   string#a*3}
42341
test@VM-4-16-debian:~/shell$ echo ${
   string#ab}
c12342341
test@VM-4-16-debian:~/shell$ echo ${
   string##a*3}
41
test@VM-4-16-debian:~/shell$ echo ${string%3*1} 
abc12342
test@VM-4-16-debian:~/shell$ echo ${string%%3*1}
abc12
test@VM-4-16-debian:~/shell$ echo ${string/34/hell}
abc12hell2341
test@VM-4-16-debian:~/shell$ echo ${string//34/hell}
abc12hell2hell1

相关文章
|
3月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
3月前
|
Shell Linux
Linux shell编程学习笔记30:打造彩色的选项菜单
Linux shell编程学习笔记30:打造彩色的选项菜单
|
1月前
|
人工智能 自然语言处理 IDE
通义灵码让AI帮你实现自动化编程
通义灵码是由阿里云与通义实验室联合开发的智能编码辅助工具,具备行级/函数级实时续写、自然语言生成代码、单元测试生成、代码优化、注释生成、代码解释、研发智能问答及异常报错排查等功能。该工具支持200多种编程语言,兼容主流IDE,如Visual Studio Code、Visual Studio和JetBrains IDEs。通义灵码在Gartner发布的AI代码助手魔力象限中表现出色,成为唯一进入挑战者象限的中国科技公司。目前,通义灵码下载量已超过470万,每日辅助生成代码超3000万次,被开发者广泛采用。
|
1月前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
2月前
|
Shell
Shell编程(下)
Shell编程(下)
110 1
|
2月前
|
Shell Linux Windows
Shell编程(上)
Shell编程(上)
47 1
|
2月前
|
存储 Java Shell
Shell 变量
10月更文挑战第2天
28 0
|
2月前
|
Shell Linux 开发工具
|
2月前
|
监控 Unix Shell
shell脚本编程学习
【10月更文挑战第1天】shell脚本编程
82 12
|
2月前
|
存储 运维 监控
自动化运维:使用Shell脚本简化日常任务
【9月更文挑战第35天】在IT运维的日常工作中,重复性的任务往往消耗大量的时间。本文将介绍如何通过编写简单的Shell脚本来自动化这些日常任务,从而提升效率。我们将一起探索Shell脚本的基础语法,并通过实际案例展示如何应用这些知识来创建有用的自动化工具。无论你是新手还是有一定经验的运维人员,这篇文章都会为你提供新的视角和技巧,让你的工作更加轻松。
72 2