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

相关文章
|
11天前
|
Shell UED Python
Shell 循环语句:重复任务的自动化利器
在Shell脚本中,循环语句如`while`和`for`是自动化任务的关键。`while`循环在条件满足时执行,例如计算1到100的和;`for-in`循环遍历列表,可用于迭代指定数值或命令输出,如求1到100的和。`select-in`循环提供交互式菜单,增强脚本用户体验。理解并运用这些循环能提升脚本效率和可读性。现在,动手试试吧!
13 2
|
1月前
|
Shell Linux Perl
Linux|如何允许 awk 使用 Shell 变量
Linux|如何允许 awk 使用 Shell 变量
37 2
|
2天前
|
机器学习/深度学习 Unix Java
技术笔记:Linux之Shell脚本编程(一)
技术笔记:Linux之Shell脚本编程(一)
|
5天前
|
机器学习/深度学习 人工智能 算法
人工智能在机器人编程与自动化控制中的应用与发展
人工智能在机器人编程与自动化控制中的应用与发展
11 0
|
10天前
|
存储 Shell 开发者
Shell 变量详解:如何定义、使用和管理
**Shell脚本中,变量是核心元素,用于暂存数据。变量默认为字符串,赋值时等号两侧无空格。命名遵循:数字、字母、下划线,以非数字开头。常用特殊变量如 `$0` (脚本名),`$#` (参数个数)。定义变量可使用单引号(不解析变量)、双引号(解析变量)或不加引号(注意空格)。使用花括号明确变量边界,`readonly` 则可设定只读变量,`unset` 删除变量。实践这些概念以加深理解。**
14 0
|
11天前
|
Shell Perl
7操作系统基础-Shell编程
7操作系统基础-Shell编程
7 0
|
25天前
|
Shell Linux
linux shell 脚本中变量截取
linux shell 脚本中变量截取
20 0
|
1月前
|
监控 关系型数据库 Shell
Shell脚本入门:从基础到实践,轻松掌握Shell编程
Shell脚本入门:从基础到实践,轻松掌握Shell编程
|
1月前
|
设计模式 并行计算 算法
代码之韵:高效编程的艺术深入理解软件自动化测试框架的设计与实现
【5月更文挑战第29天】在数字世界的构建中,编程不仅仅是一门科学,更是一种艺术。本文将探讨如何通过理解编程的本质、掌握设计模式、运用算法智慧以及持续的性能优化过程,来提升编程效率和代码质量。我们将从宏观的架构设计到微观的代码细节,剖析那些让代码更加优雅、高效且易于维护的技巧与实践。
|
1月前
|
存储 Shell C语言
shell脚本 编程 变量 基本入门(详解)
shell脚本 编程 变量 基本入门(详解)