当前位置: 首页 > news >正文

01-shell的自学课-基础变量学习

一、echo变量的一个坑

声明【临时变量】,然后打印出来;(拓展:env是linux的全局变量)

[root@gong ~]# xinjizhiwa=shell
[root@gong ~]# echo $xinjizhiwa
shell

[root@gong ~]# echo $xinjizhiwa-haha
shell-haha
[root@gong ~]# echo $xinjizhiwahaha

#不分开写,就什么都不显示了;因为,系统自动识别“xinjizhiwahaha”为一个整体,我们没有声明这个变量,所以打印值为空;

如果说们有这种需求,就要在变量后面直接加字符串,怎么办呀?使用{}框住变量名即可;

[root@gong ~]# echo ${xinjizhiwa}haha
shellhaha

二、linux的特殊的变量

1,系统命令变量

        我们在安装好一个软件在linux之后,命令不论在哪个目录下,都可以使用,本质就是通过变量的方式进行打印的;

        命令本身是一个执行文件,我们使用“命令”实际上就是通过【命令路径变量】进行寻址并使用变量地址中的执行文件的;

        那么系统中命令的变量在哪里?

[root@gong ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

2,字符集变量

就是系统使用的什么字符集(万国码、、、、)

[root@gong ~]# echo $LANG
en_US.UTF-8

3,解释器的颜色变量

[root@gong ~]# echo $PS1
[\u@\h \W]\$

4,当前用户的ID

[root@gong ~]# echo $UID
0

三、案例写一个简单的shell脚本

[root@gong ~]# vim 01-shell.sh

#!/bin/bash

#声明变量
hostname=`hostname`
ipaddress=`hostname -I`
mem_total=`free -h | awk 'NR==2{print $2}'`
mem_free=`free -h | awk 'NR==2{print $NF}'`
sys_load=`top -bn1 | awk -F: 'NR==1{print $NF}'`

#执行代码
echo "主机名称是:$hostname"
echo "ip地址:$ipaddress"
echo "内存总量:$mem_total"
echo "内存空闲:$mem_free"
echo "系统负载:$sys_load"

[root@gong ~]# sh 01-shell.sh

四、【$数字】=接收传参

使用脚本外部传进来的参数,作为变量使用;

【$数字】   #传参;命令行的文字传输到脚本当中;$1表示第一个参数,$2表示第二个参数;

· 编辑一个脚本

#!/bin/bash

xinjizhiwa=$1
echo " ${xinjizhiwa} 传参成功了!"

[root@gong ~]# sh 02-shell.sh xinjizhiwa
 xinjizhiwa 传参成功了!
[root@gong ~]# sh 02-shell.sh haha
 haha 传参成功了!
[root@gong ~]# sh 02-shell.sh 111222333
 111222333 传参成功了!

· 两个参数案例

[root@gong ~]# vim 02-shell.sh

#!/bin/bash

xinjizhiwa=$1
xjzw=$2
xuexi=$3
echo " ${xinjizhiwa} 传参成功了!"
echo " ${xjzw} 传参成功了!"
echo " ${xuexi} 传参成功了!"

[root@gong ~]# sh 02-shell.sh haha xixi hehe
 haha 传参成功了!
 xixi 传参成功了!
 hehe 传参成功了!

五、【$0】脚本的路径/名字

【$0】就代表脚本呢的文件名称,怎么使用,你随意;

[root@gong ~]# vim 02-shell.sh

#!/bin/bash

xinjizhiwa=$1
xjzw=$2
xuexi=$3
echo " ${xinjizhiwa} 传参成功了!"
echo " ${xjzw} 传参成功了!"
echo " ${xuexi} 传参成功了!"
echo "脚本的名称是:$0"

[root@gong ~]# sh 02-shell.sh haha xixi hehe
 haha 传参成功了!
 xixi 传参成功了!
 hehe 传参成功了!
脚本的名称是:02-shell.sh

六、【$?】上一条执行结果

打印$?得到的结果是,上一条命令是否执行成功,成功则返回0,不成功,怎返回非0;

[root@gong ~]# cat /etc/hosts >> /dev/null 
[root@gong ~]# echo $?
0
[root@gong ~]# catttttt  /etc/hosts >> /dev/null 
-bash: catttttt: command not found
[root@gong ~]# echo $?
127

七、【$#】控制传参数量

        后面讲,需要配合其他知识;

八、【$@】或者【$*】取出脚本中所有参数

[root@gong ~]# vim 02-shell.sh 

#!/bin/bash

xinjizhiwa=$1
xjzw=$2
echo " ${xinjizhiwa} 传参成功了!"
echo " ${xjzw} 传参成功了!~ "
############################
echo $@
echo $*

[root@gong ~]# bash 02-shell.sh 111 222
 111 传参成功了!
 222 传参成功了!~ 
111 222
111 222

至此,变量就告一段落;

http://www.lryc.cn/news/316651.html

相关文章:

  • 鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Span)
  • 前端框架的演进之路:从静态网页到现代交互体验的探索
  • 在Linux/Ubuntu/Debian中设置字体
  • Python 常用内置函数,及实例演示
  • C++标准输入输出和名字空间
  • hive逗号分割行列转换
  • Jenkins插件Parameterized Scheduler用法
  • 西门子S7.NET通信库【读】操作详解
  • Qt/C++音视频开发69-保存监控pcm音频数据到mp4文件/监控录像/录像存储和回放/264/265/aac/pcm等
  • 闲聊Swift的枚举关联值
  • 抓取Instagram数据:Fizzler库带您进入C#爬虫程序的世界
  • Codeforces Round 933 (Div. 3) A~D
  • 《vtk9 book》 官方web版 第3章 - 计算机图形基础 (3 / 5)
  • pytorch 函数整理
  • docker实战之制作filebeat镜像
  • 【DAY11 软考中级备考笔记】数据结构 查找和排序
  • 华为机考:HJ102 字符统计
  • 安装配置HBase
  • 【更新】数字金融与企业ESG表现:效应、机制与“漂绿”检验数据集(2011-2022年)
  • 手写简易操作系统(五)--获得物理内存容量
  • 机器学习之DeepSequence软件使用学习3-预测突变效应
  • Linux文件与文件系统的压缩
  • ubuntu 中进入python 编辑如何退出到命令行
  • 2024.3.12 C++
  • 飞塔防火墙开局百篇——002.FortiGate上网配置——透明模式配置(Transparent)
  • 代码随想录算法训练营第52天|300.最长递增子序列 674.最长连续递增序列 718.最长重复子数组
  • 分享一些开源的游戏仓库
  • Java详解:单列 | 双列集合 | Collections类
  • Centos7 使用docker来部署mondb
  • Java SE入门及基础(35)