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

Shell 脚本编程1(常用命令+概述)

shell:命令解释器,将我们一直以来使用的命令翻译成机器可以懂得指令,让其执行。

脚本:可以运行的文本就是脚本。

编程:将已经学习过得命令,按照一定顺序(流程控制)组合起来,批量执行。

1. 常用命令

1.1 设置主机名

方式1:修改 /etc/hostname 文件,在文件中写入主机名称

vim /etc/hostname
# 添加如下内容
openEuler
# 保存退出

方式2:使用hostname 命令修改

#格式
hostnamectl  set-hostname  主机名称# 修改主机名称
[root@localhost ~]# hostnamectl set-hostname OpenEuler

方式3:脚本传参

shell脚本中可以使用$num表示调用传入的第几个参数,参数之间使用空格进行间隔的。

以下脚本用于设置虚拟机的名称

echo $1 > /etc/hostname
echo "你传入的第一个参数是:"$1# 在运行此脚本的时候 $1就表示 第一个参数 如果有多个参数 依次以$2 $3 $4...表示
# 改脚本还可以改为
hostnamectl hostanme $1
echo "你传入的第一个参数是:"$1

1.2 nmcli

格式

nmcli [OPTIONS] OBJECT { COMMAND | help }

查看网卡名称

nmcli [OPTIONS] OBJECT { COMMAND | help }

设置IP地址为150

[root@server ~]# nmcli c modify ens32 ipv4.addresses 192.168.72.150/24 ipv4.method manual ipv4.dns 114.114.114.114
[root@server ~]# nmcli c modify ens32 ipv4.gateway 192.168.72.2
[root@server ~]# nmcli c modify ens32 autoconnect yes
[root@server ~]# nmcli c up ens32

增加ip

[root@server ~]# nmcli c modify ens32 +ipv4.addresses 192.168.72.151/24
[root@server ~]# nmcli c up ens32

1.3 echo

作用

  • echo是用于终端打印的基本命令,默认情况下,echo 在每次调用后会添加一个换行符

示例

echo参数选项说明
-n不换行输出内容
-e解析转义字符

示例

# -n输出内容并且内容之后不换行
[root@22222 ~]# echo -n hhahaha
hhahaha[root@22222 ~]## -e 对转义符进行转义
[root@22222 ~]# echo "i\nam\nyour\nteacher\n"
i\nam\nyour\nteacher\n
[root@22222 ~]# echo -e "i\nam\nyour\nteacher\n"
i
am
your
teacher

[root@server ~]# echo -n i have a cat[root@server ~]# echo i\thave\ta\tcat[root@server ~]# echo -e i\thave\ta\tcat[root@server ~]# echo -e "i\thave\ta\tcat"

1.4 export

  • export命令用于设置或者显示环境变量
[root@server ~]# mingzi=hehe
[root@server ~]# echo $mingzi
hehe# 进入子shell
[root@server ~]# bash
[root@server ~]# echo $mingzi
# 返回父shell
[root@server ~]# exit
exit[root@server ~]# export mingzi
# 进入子shell
[root@server ~]# bash
[root@server ~]# echo $mingzi
hehe
# 导出环境变量将普通变量name升级为环境变量
[root@22222 ~]# name=liuyinghao
[root@22222 ~]# echo $name
liuyinghao
[root@22222 ~]# export name
[root@22222 ~]# zsh
[root@22222]~# echo $name
liuyinghao# 直接使用export创建环境变量
[root@22222 ~]# export name=heroliu
[root@22222 ~]# echo $name
heroliu
[root@22222 ~]# zsh
[root@22222]~# echo $name
heroliu
[root@22222]~# bash
[root@22222 ~]# echo $name
heroliu

1.5 read

作用

  • read 命令可从标准输入读取字符串等信息,然后传递给shell程序内部定义的变量使用。

  • read 是一个重要的 bash 命令,用于从键盘或标准输入读取文本,我们可以使用 read 命令以交互形式读取来自用户的输入,当然 read 能做的远不止这些。

  • 通常我们按下回车键表示命令输入完成,但是很特殊情况下,我们需要基于字符数或者特定字符来表示命令输入完成

语法

read [选项]
常用选项:
-a  读取的内容存入数组
-d  持续读取直到读入 DELIM 变量中的第一个字符,而不是换行符
-i  用于给变量一个默认值
-k  用于读取指定数量的键盘输入内容
-n/N 读取N个字符
-p  指定提示信息,用于等待输入
-r  不允许反斜杠转义任何字符
-s  从标准输入中读取密码而不在屏幕上显示输入的字符
-t  设置读取输入的超时时间,单位为秒

示例

# 1. 读取单个或多个变量
[root@server ~]# read a[root@server ~]# echo $a[root@server ~]# read a b c [root@server ~]# echo $a $b $c# 2. 将读取的数据存入数组中
[root@server ~]# read -a array[root@openEuler ~]# echo ${array[@]}[root@openEuler ~]# echo ${array[0]}[root@openEuler ~]# echo ${array[1]}# 3. 显示输入提示符
[root@server ~]# read -p "please input your name: " name
[root@server ~]# echo $name# 4. 显示输入提示符且设置读取超时
[root@server ~]# read -t 10 -p "please input your name:" name[root@server ~]# echo $name# 5. 读取N个字符
[root@server ~]# read -n 3 -p "please input content:" answer
[root@server ~]# echo $answer# 6. 用读取一个定长的验证码
[root@server ~]# read -k 6 -p "请输入6位验证码: " code
[root@server ~]# echo $code# 7. 提示用户输入年份,如果用户不输入则使用默认值
[root@server ~]# read -i 2025 -p "请输入当前所处的年份(默认为2025): " year
[root@server ~]# echo "当前年份是: $

相关文章:

  • 金丝猴食品:智能中枢AI-COP构建全链路数智化运营体系
  • C++ 异常捕获 try 和 __try的区别笔记
  • Python环境搭建指南
  • 慈缘基金会“蝴蝶飞”助西藏女孩白玛卓嘎“折翼重生”
  • 基于STM32的居家环境监测报警Proteus仿真+程序设计+设计报告+讲解视频
  • smbd:快速拉取服務端SMB共享文件脚本工具
  • SAM详解3.2(关于2和3的题)
  • 黑马k8s(二)
  • 子串简写(JAVA)一维前缀和, 蓝桥杯
  • 学习黑客5 分钟深入浅出理解cron [特殊字符]
  • 基于阿伦尼斯模型的电池寿命预测:原理、应用与挑战
  • 【智能指针】
  • SD06_前后端分离项目部署流程(采用Nginx)
  • SAP Commerce(Hybris)开发实战(一)
  • linux-----------Ext系列⽂件系统(上)
  • 进阶 DFS 学习笔记
  • 链表头插法的优化补充、尾插法完结!
  • DNS负载均衡和CDN的区别
  • CentOS 7 修改锁屏时间为永不
  • ADI ADRV902x的射频模拟信号输入输出端口的巴伦匹配
  • 汇源果汁发文:经营情况一切正常
  • 上海工匠学院首届学历班56人毕业,新一届拟招生200人
  • 邯郸一酒店办婚宴发生火灾,新郎母亲:饭没吃成酒店还要收费
  • 洗冤录|县令遇豪强:黄榦处理的一起地产纠纷案
  • 巴基斯坦称对印精准打击造成设施损坏和人员伤亡
  • 明星同款撕拉片,为何能炒到三四百一张?