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

相关文章
|
15天前
|
监控 Shell Linux
探索Linux操作系统下的Shell编程之魅力
【8月更文挑战第4天】本文旨在通过一系列精心设计的示例和分析,揭示在Linux环境下进行Shell编程的独特之处及其强大功能。我们将从基础语法入手,逐步深入到脚本的编写与执行,最终通过实际代码案例展现Shell编程在日常系统管理和自动化任务中的应用价值。文章不仅适合初学者构建扎实的基础,同时也为有一定经验的开发者提供进阶技巧。
28 11
|
12天前
|
Shell
[shell]在curl测试的data参数中引用变量
[shell]在curl测试的data参数中引用变量
|
1月前
|
分布式计算 大数据 Shell
MaxCompute产品使用合集之odps shell如何将ech变量的结果集合写入文件,并且指定服务器的位置
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
30 10
|
1月前
|
JavaScript 前端开发 Shell
Shell 脚本编程保姆级教程(上)
Shell 脚本编程保姆级教程(上)
|
19天前
|
运维 中间件 PHP
深入理解PHP中的中间件模式自动化运维之脚本编程实践##
【7月更文挑战第31天】在PHP开发中,中间件模式是一种强大的设计模式,它允许开发者在请求处理流程中注入自定义的处理逻辑。本文将通过实际代码示例来探讨如何在PHP项目中实现和使用中间件,以及这种模式如何提升应用程序的可维护性和扩展性。 【7月更文挑战第31天】 在现代IT运维管理中,自动化不再是可选项,而是提高生产效率、确保服务质量的必需品。本文将通过Python脚本编程的角度,探讨如何利用代码简化日常运维任务,提升工作效率。我们将从实际案例出发,逐步剖析自动化脚本的设计思路、实现过程及其带来的益处。 ##
15 0
|
1月前
|
Shell Linux
Linux Shell 脚本入门教程:开启你的自动化之旅
Shell是一种计算机程序,它充当了用户与操作系统之间的接口。在Linux系统中,Shell允许用户通过命令行界面(CLI)来控制计算机。Shell脚本则是一种使用Shell语言编写的脚本,它可以自动执行一系列的命令,帮助用户实现任务自动化,提高工作效率。
|
22天前
|
Shell Linux Perl
shell 编程中 awk ,wc ,$0,$1 等 命令的使用总结
shell 编程中 awk ,wc ,$0,$1 等 命令的使用总结
18 0
|
22天前
|
Shell Linux
Shell 脚本编程学习
Shell 脚本编程学习
20 0
|
1月前
|
Shell
Shell 脚本编程保姆级教程(下)
Shell 脚本编程保姆级教程(下)
|
1月前
|
Shell Linux
Linux环境变量之shell中export定义全局变量和echo 变量的区别
Linux环境变量之shell中export定义全局变量和echo 变量的区别