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

Shell基础

Shell概念

Shell的定义

作为命令解释器,在用户不能直接接触内核的前提下,增加命令解释器,简化用户操作,保障内核安全。

Shell功能

能够接收用户输入的命令,并对命令进行处理,用户运行命令后,Shell调用内核暴露出的接口。处理完毕后将结果反馈给用户。

Shell命令

1.内置命令:Shell本身自带的

2.外部命令:其他应用程序(一个程序就是一个命令)

查看Shell版本

Shell是一个程序,一般放在/bin或/usr/bin下。当前Linux系统可用的Shell记录在/etc/shells文件中。

[root@localhost ~]# cat /etc/shells 
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash

查看当前Linux默认Shell

[root@localhost ~]# echo $SHELL
/bin/bash

Shell变量

Shell变量的定义

变量是Shell程序运行时使用的最小数据单元。程序在内存中运行,在程序运行过程中,内存空间内的某些值是变化的。这个内存空间就是变量。

即 用一个特定的字符串去表示不固定的内容。内存空间内的值就是变量值。声明变量时可以不赋值,也可以直接赋初值。

定义变量的语法格式如下:
变量名 = 变量值;

例:

varName = varValue;

Shell变量的类型

Shell变量分为四类,分别为自定义变量、环境变量、位置变量和预定义变量。

1.自定义变量
  • 临时定义的变量;
  • 可理解为局部变量或普通变量,只能在创建他们的Shell函数或Shell脚本中使用。
自定义变量使用说明
定义自定义变量变量名=变量值,变量名必须以字母或下划线开头,区分大小写,如ip1=192.168.10.1
使用自定义变量$变量名
查看自定义变量echo $变量名 set (所有变量:包括自定义变量和环境变量)
取消自定义变量unset 变量名
自定义变量作用范围仅在当前Shell中有效

例:ping主机测试脚本,使用自定义变量方式定义ip=192.168.10.1,ping的结果放在/dev/null,即垃圾箱。

[root@localhost ~]# vi pingtest.sh
#!/bin/bash
log_dir=/home/backup
ip=192.168.10.1
ping -c1 $ip &>/home/backup/log_test
2.环境变量
  • 指用export内置命令导出的变量,用于定义Shell的运行环境,保证Shell命令正确执行,如$0、$1、$#;
  • 可称为全局变量,在创建其的Shell及派生的任意子进程Shell中使用。
环境变量说明
定义环境变量使用export命令声明即可; 例,export backup_dir=/home/backup; 例2,export backup_dir将自定义变量转为环境变量
使用环境变量$变量名 或${变量名}
查看环境变量echo $变量名,或env,如env | grep backup_dir1
取消环境变量unset 变量名
环境变量作用范围在当前Shell和子Shell有效

例:使用环境变量判断主机IP地址是否正常。引用环境变量$ip。其中$?含义为上一条命令的返回值。如果返回值为0,表示主机正常;否则表示主机宕机。-eq为等于。

[root@localhost ~]# vi pingtest.sh
#!/bin/bash
log_dir=/home/backup
ip=192.168.10.1
ping -c1 $ip &>/home/backup/log_test
if [ $? -eq 0 ];then       echo "$ip is up"
else       echo "$ip is down"
fi
3.位置变量
  • 从命令行、函数或脚本执行等传递参数时,
http://www.xdnf.cn/news/12324.html

相关文章:

  • 记录一次 apt-key curl导入失败的处理方式
  • 阶乘的因数
  • 算法篇 八大排序(冒泡 插入 选择 堆 希尔 快排 归并 计数)
  • Linux中INADDR_ANY详解
  • [蓝桥杯]堆的计数
  • rocketmq索引
  • 《最长公共子序列》题集
  • Educational Codeforces Round 179 (Rated for Div. 2)
  • 2025年5月月赛 乙组T1~T3
  • RPG22.处理武器碰撞
  • 所有CSS选择器
  • 2025爱分析·银行数字化应用实践报告|爱分析报告
  • 策略梯度核心:Advantage 与 GAE 原理详解
  • 苍穹外卖|学习笔记|day06
  • Day13
  • Grafana-ECharts应用讲解(玫瑰图示例)
  • 定时任务的 cron 表达式
  • OpenEuler24.03 部署RagFlow学习记录(PVE虚拟化环境)
  • 实验科学中策略的长期效应评估学习笔记
  • Day45 Python打卡训练营
  • 图像分割算法入门:从基础到FCN
  • Bean的作用域
  • 代付系统:功能解析与多场景应用深度解读
  • 8天Python从入门到精通【itheima】-69~70(字符串的常见定义和操作+案例练习)
  • 软考 系统架构设计师系列知识点之杂项集萃(81)
  • Spring Bean是否是线程安全的
  • 虎扑正式易主,迅雷完成收购会带来什么变化?
  • Postman常见问题及解决方法
  • 红花基因组2-文献精读141
  • springBoot服务之间的转发