Shell脚本的特殊变量和特殊符号应用

news/2024/11/30 14:30:15/

记录:428

场景:Shell脚本中常用特殊符号,=,$,${},$0,$n,$#,$*,$@,$?,$$,(( )),[[ ]],$[],|,>>,>,<,<<。

版本:CentOS Linux release 7.9.2009。

1.Shell特殊符号功能简述

(1)使用=赋值变量。

(2)使用$和${}获取变量值。

(3)使用$0获取当前脚本文件名称。

(4)使用$n获取传递给脚本或函数的参数,n数字,表示第几个参数。例如:$1表示第1个参数,$2表示第2个参数。

(5)使用$#获取传递给脚本或函数的参数个数。

(6)使用$*获取传递给脚本或函数的所有参数。

(7)使用$@获取传递给脚本或函数的所有参数。

(8)使用$?获取上个命令的退出状态。

(9)使用$$获取当前Shell进程ID。

(10)使用(( )),对整数进行数学运算。

(11)使用$[],对整数进行数学运算。

(12)使用[[ ]],检测某个条件是否成立。

(13)使用|管道符连接多个命令。

(14)使用>>,以追加的方式,把命令的正确输出结果输出到文件中。

(15)使用>,以覆盖的方式,把命令的正确输出结果输出到文件中。

(16)使用<,把文件中的内容作为命令的输入源。

(17)使用<<,从标准输入(键盘)中读取数据,直到遇见停止符EOF才停止输入。停止符EOF是任意的字符串,用户自己定义的符号。

2.Shell特殊符号使用脚本

#!/bin/bash
echo '1.使用=赋值变量'
city01="Hangzhou"
city02='Suzhou'
city03=Shanghai
echo '2.使用$和${}获取变量值'
echo "城市名称: $city01"
echo "城市名称: ${city02}"
echo "城市名称: ${city03}"
echo '3.使用$0获取当前脚本文件名称'
echo "脚本名称: $0"
echo '4.使用$n获取传递给脚本或函数的参数,n数字,表示第几个参数.例如:$1表示第1个参数,$2表示第2个参数'
echo "第1个参数: $1"
echo "第2个参数: $2"
echo '5.使用$#获取传递给脚本或函数的参数个数'
echo "参数个数: $#"
echo '6.使用$*获取传递给脚本或函数的所有参数'
echo "打印所有参数: $*"
echo '7.使用$@获取传递给脚本或函数的所有参数'
echo "打印所有参数: $@"
echo '8.使用$?获取上个命令的退出状态'
echo "上一命令状态码: $?"
echo '9.使用$$获取当前Shell进程ID'
echo "当前shell进程ID号: $$"
echo '10.使用(( )),对整数进行数学运算'
result=$((100*3+99))
echo "计算结果: $result"
echo '11.使用$[],对整数进行数学运算'
result=$[100*5+99]
echo "计算结果: $result"
echo '12.使用[[ ]],检测某个条件是否成立'
if [[ $1 < $2 ]]
thenecho "参数1小于参数2"
elif [[ $1 == $2 ]]
thenecho "参数1等于参数2"
elseecho "参数1大于参数2"
fi
echo '13.使用|管道符连接多个命令'
result=`ps -ef | wc -l`
echo "管道符计算结果: ${result}"
echo '14.使用>>,以追加的方式,把命令的正确输出结果输出到文件中'
echo "Hangzhou" >> m01.txt
echo "Suzhou" >> m01.txt
echo "打印m01.txt文件内容:"
echo $(cat m01.txt)
echo '15.使用>,以覆盖的方式,把命令的正确输出结果输出到文件中'
echo "Hangzhou" > m02.txt
echo "Suzhou" > m02.txt
echo "打印m02.txt文件内容:"
echo $(cat m02.txt)
echo '16.使用<,把文件中的内容作为命令的输入源'
result=`wc -l </home/tutorial/province.txt`
echo "输入重定向计算结果: ${result}"
echo '17.使用<<,从标准输入(键盘)中读取数据,直到遇见停止符EOF才停止输入.'
echo "在控制台按照如下格式试验"
echo '[root@hadoop211 tutorial]# cat >/home/tutorial/province01.txt <<EOF'
echo '> Hangzhou'
echo '> Suzhou'
echo '> EOF'

3.执行脚本

命令:bash b2023051620.sh 20 30

解析:执行命令且携带参数。

4.脚本执行结果

[root@hadoop211 tutorial]# bash b2023051620.sh 20 30
1.使用=赋值变量
2.使用$和${}获取变量值
城市名称: Hangzhou
城市名称: Suzhou
城市名称: Shanghai
3.使用$0获取当前脚本文件名称
脚本名称: b2023051620.sh
4.使用$n获取传递给脚本或函数的参数,n数字,表示第几个参数.例如:$1表示第1个参数,$2表示第2个参数
第1个参数: 20
第2个参数: 30
5.使用$#获取传递给脚本或函数的参数个数
参数个数: 2
6.使用$*获取传递给脚本或函数的所有参数
打印所有参数: 20 30
7.使用$@获取传递给脚本或函数的所有参数
打印所有参数: 20 30
8.使用$?获取上个命令的退出状态
上一命令状态码: 0
9.使用$$获取当前Shell进程ID
当前shell进程ID号: 1656
10.使用(( )),对整数进行数学运算
计算结果: 399
11.使用$[],对整数进行数学运算
计算结果: 599
12.使用[[ ]],检测某个条件是否成立
参数1小于参数2
13.使用|管道符连接多个命令
管道符计算结果: 140
14.使用>>,以追加的方式,把命令的正确输出结果输出到文件中
打印m01.txt文件内容:
Suzhou Hangzhou Suzhou Hangzhou Suzhou Hangzhou Suzhou
15.使用>,以覆盖的方式,把命令的正确输出结果输出到文件中
打印m02.txt文件内容:
Suzhou
16.使用<,把文件中的内容作为命令的输入源
输入重定向计算结果: 3
17.使用<<,从标准输入(键盘)中读取数据,直到遇见停止符EOF才停止输入.
在控制台按照如下格式试验
[root@hadoop211 tutorial]# cat >/home/tutorial/province01.txt <<EOF
> Hangzhou
> Suzhou
> EOF

注意:示例中使用的province01.txt,自行定义即可。

以上,感谢。

2023年5月16日


http://www.ppmy.cn/news/71950.html

相关文章

防火墙NAT策略中各项之间以及策略与策略之间的关系

实验结论 将实验结论写在前面方便大家直接查看 1、NAT策略中rule与rule之间的关系为“或”的关系&#xff0c;即多个rule存在时&#xff0c;流量只需要匹配其中一个rule即可&#xff0c;流量会按照匹配的rule规则进行流量转发。&#xff08;华为华三的防火墙rule是没有ID的&a…

【学习笔记】Rider调试unity【 联调、断点调试等】(决定弃用vscode了)

目录 一 弃用vscode原委二 Rider调试Unity2.1 启动调试2.2 pausepoint 暂停点2.2.1 使用pausepoint2.2.2 pausepoint&#xfeff;与breakpoint的区别 2.3 不同run configuration区别 三 Rider编辑3.1 补充 四 总结 转载请注明出处&#xff1a;&#x1f517;https://blog.csdn.n…

22届硕士,去年秋招拿了字节跳动offer,有一说一,不是很难进

自从抖音短视频APP火了之后&#xff0c;起公司字节跳动也逐渐向着大厂靠拢&#xff0c;相信大家都已经对这家公司很熟悉了&#xff0c;尤其是近几年来&#xff0c;对它的认识也在不断刷新&#xff0c;它惊人的发展速度确实让行业内人刮目相看&#xff0c;如今很多年轻人也想要挤…

SpringBoot——配置文件的分类

简单介绍&#xff1a; 在之前我们写配置文件的时候&#xff0c;我们直接在项目中的resources下面编写的配置文件&#xff0c;其实除了在这个路径下编写配置文件&#xff0c;还可以在其他的地方编写配置文件&#xff0c;并且不同位置的配置文件在启动的时候的优先级也是不一样的…

Taro小程序配置网络请求

目录 1. 创建目录结构2. 全局通用的config的变量配置3. 配置http网络请求4. 使用 1. 创建目录结构 在 src 目录下新建 service 目录&#xff0c;目录下创建 api 和 http 子目录在 src 目录下新建 config 配置文件 2. 全局通用的config的变量配置 在 config 文件中添加一下代…

众位力量汇集《永恒之塔私服》新版龙战前传

盛大游戏《永恒之塔》从万众翘首企盼中登陆国服到现在&#xff0c;已经过去了一年有余。在前不久前更新的周年庆版本“云上的召唤”中&#xff0c;精灵星的宝宝终于可以和精灵星一起翱翔在天际了…… “云上的召唤”我们还没有体验够&#xff0c;全新版本“龙战前传”已然于7月…

素雅的登录界面,简单而优雅

先上效果图&#xff1a; 再上代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><style>*, *::after, *::before {margin: 0;padding: 0;box-sizing: bord…

【Mybatis】Mybatis处理一对多、多对多关系映射-四

唠嗑部分 上篇文章我们说了Mybatis中ORM映射的几种方式&#xff0c;相关文章&#xff1a; 【Mybatis】简单入门及工具类封装-一 【Mybatis】如何实现ORM映射-二 【Mybatis】Mybatis的动态SQL、缓存机制-三 这篇文章我们来说说Mybatis如何处理一对一、一对多、多对多的关系映射…