shell脚本基础应用

本文介绍了Linux下shell脚本的相关知识。阐述了shell脚本概念,即按顺序保存命令到文本文件并结合控制语句完成复杂操作;说明了shell的作用是解释命令行;讲解了shell的用法,包括查看环境、编辑与执行脚本;还介绍了普通赋值和read赋值,最后进行了相关实验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

shell脚本的概念

  • 将要执行的命令按顺序保存到一个文本文件
  • 可结合各种shell控制语句完成更复杂的操作

shell的作用

  • 介于系统内核与用户之间,负责解释命令行

shell的各种用法

  • 查看shell环境
[root@localhost ~]# cat /etc/shells 
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/tcsh
/bin/csh

  • 编辑一个shell,先创建一个空文件1.sh
#!/bin/bash 		//声明解释器
#这是一个脚本 		//注释
<<adc				//<<adc 和adc中间都是注释
这是一个脚本
adc
echo "hello world"		//将hello world打在屏幕

想要执行这个shell脚本,需要将权限改为可执行

[root@localhost ~]# chmod +x 1.sh 
[root@localhost ~]# ll
总用量 16
-rwxr-xr-x. 1 root root   80 62 01:08 1.sh
-rw-------. 1 root root 1764 520 20:46 anaconda-ks.cfg
-rw-r--r--. 1 root root 1812 520 20:49 initial-setup-ks.cfg
-rw-r--r--. 1 root root  193 61 22:09 test.sh

然后执行

[root@localhost ~]# ./1.sh 
hello world
[root@localhost ~]# /root/1.sh 
hello world

当文件没有执行权限时可以用下面几种命令执行shell脚本

[root@localhost ~]# chmod -x 1.sh 
[root@localhost ~]# ll
总用量 16
-rw-r--r--. 1 root root   80 62 01:08 1.sh
-rw-------. 1 root root 1764 520 20:46 anaconda-ks.cfg
-rw-r--r--. 1 root root 1812 520 20:49 initial-setup-ks.cfg
-rw-r--r--. 1 root root  193 61 22:09 test.sh
[root@localhost ~]# bash 1.sh  //前两个是在新的shell环境运行
hello world
[root@localhost ~]# sh 1.sh 
hello world
[root@localhost ~]# source 1.sh  //后两个是在当前shell环境运行
hello world
[root@localhost ~]# . 1.sh 
hello world

  • bash -x是每一行都调试
[root@localhost ~]# bash -x 1.sh 
+ echo 'hello world'
hello world
+ dwd
1.sh:行7: dwd: 未找到命令
+ wqd
1.sh:行8: wqd: 未找到命令
[root@localhost ~]# 
[root@localhost ~]# bash -n 1.sh  //检查语法错误
1.sh:行9: 寻找匹配的 ``' 是遇到了未预期的文件结束符
1.sh:行10: 语法错误: 未预期的文件结尾

linux赋值

普通赋值

[root@localhost ~]# a=123      //将a赋值123
  • 注意:变量名由字母,数字,下划线组成,不可用特殊符号,不能以数字开头,区分大小写
[root@localhost ~]# echo $a  	//查看变量
123
[root@localhost ~]# unset a		//取消变量
[root@localhost ~]# echo $a
[root@localhost ~]# set |grep aa 	//查看所有变量并筛选出aa变量

[root@localhost ~]# declare -i int=10 	//定义字符是整数型数量
[root@localhost ~]# int=q
[root@localhost ~]# echo $int
0
[root@localhost ~]# int=1
[root@localhost ~]# echo $int
1

[root@localhost ~]# echo "$a"  	//输出调出的a变量
234
[root@localhost ~]# echo '$a'	//直接输出$a
$a

  • readonly 设为只读,不能重新赋值覆盖,不能取消变量
[root@localhost ~]# readonly a
[root@localhost ~]# a=121
-bash: a: 只读变量
[root@localhost ~]# unset a
-bash: unset: a: 无法反设定: 只读 variable

read赋值

[root@localhost ~]# read name  	//将zhangsan赋值到name
zhangsan
[root@localhost ~]# echo $name 
zhangsan

[root@localhost ~]# read -p "请输入名字:" name 		//-p可以加汉字字符等,比较友好
请输入名字:
[root@localhost ~]# read -n5 -p "请输入名字:" name  //-n5最多只能输入五个字符,多了直接退出
请输入名字:zhang[root@localhost ~]# sa
[root@localhost ~]# read -s -p "请输入名字:" name 	//-s可以静默输入,看不到输入的字符
请输入名字:[root@localhost ~]# 

  • env 查看系统所有环境变量
[root@localhost ~]# env |grep PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

将aa=10永久加入环境变量

[root@localhost ~]# vim /etc/profile
export aa=10		//加一行
[root@localhost ~]# source /etc/profile		//立即生效
重新连接ssh后
[root@localhost ~]# echo $aa
10
[root@localhost ~]# export cc=30	//临时加入环境变量
[root@localhost ~]# echo $cc 		//重启后没有了


实验

在这里插入图片描述
首先创建一个shell脚本

#!/bin/bsh
echo  "--------------------------------------------------"
echo -e "\e[36m#               System Info Table              \e[3;50H#\e[0m"
echo -e "\e[5;28m#                                              \e[4;50H#\e[0m"
echo -e "\e[37m# 当前登录用户为:$USER \e[5;50H#\e[0m"
echo -e "\e[5;33m# 当前登录目录为:$PWD \e[6;50H#\e[0m"
echo -e "\e[33m# 当前登录主机为:$HOSTNAME \e[7;50H#\e[0m"
echo -e "\e[44m# 当前系统时间为:$(date +"%Y-%m-%d %H:%M:%S") \e[8;50H#\e[0m"
echo -e "\e[46m# 当前系统运行的进程数为:$(ps aux |wc -l) \e[9;50H#\e[0m"
echo -e "\e[11m# 当前系统登录的用户数:$(who |wc -l) \e[10;50H#\e[0m"
echo -e "\e[22m# 任何问题请联系:12345678901 \e[11;50H#\e[0m"
echo  "--------------------------------------------------"

  • echo -e控制输出的内容
  • \e[5;28m 内容 \e[5;50H内容\e[0m 前面e是使用颜色输出字体,5是字体闪烁,28m是颜色,后面e是控制行列,5是第五行,50是第50列,结尾是[0m固定用法,数字改变当前shell颜色
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值