Shell编程(上)

简介: Shell编程(上)

一、概述

Shell 是一个命令解释器,用户可以用shell来启动、挂起、停止甚至是编写一些程序(也是一个编程语言)。

这个交互界面就是Shell:

terminal是输入命令和显示输出的那个窗口,shell是窗口背后在解释你输入的程序。

你在 windows上面打开的cmd和powershell都是窗口,但cmd默认解释输入的命令的方式是cmd,powershell则是powershell,Linux和mac上的terminal打开以后默认用的是shell,有些默认用的是cshell,有些用的是bash,这两个都是shell。

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

shell其实就是Linux里的一个翻译官,负责把命令翻译成二进制机器语言数字

内核拥有最高级别、最底层的权限,在接受到shell命令以后可以直接控制硬件。

二、shell脚本执行方式

2.1编写第一个脚本

"hello.sh" [New] 5L, 71C written
#先创建sh文件夹,在里面写代码:
[root@localhost ~]# mkdir sh
[root@localhost ~]# ls
anaconda-ks.cfg  fengjie             Japan                sh       模板  下载
cangjin          hello.sh            Japanlovestory.list  yangmi   视频  音乐
cangjinwq        install.log         linghu               zhengyi  图片  桌面
changjin         install.log.syslog  nvshen               公共的   文档
[root@localhost ~]# cd sh/
##写脚本代码hello.sh
[root@localhost sh]# vi hello.sh
##第一行是声明这个是shell脚本,指定解析器,必须有
#!/bin/bash
#the first  program
#author:linghu
echo -e "Hello world!"
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
                                                                             
"hello.sh" 6L, 72C written
[root@localhost sh]# chmod 755 hello.sh
[root@localhost sh]# ll
总用量 4
-rwxr-xr-x. 1 root root 72 4月  22 16:13 hello.sh
[root@localhost sh]# ls
hello.sh
##通过绝对路径执行shell脚本
[root@localhost sh]# /root/sh/hello.sh
Hello world!
[root@localhost sh]# 
##通过bash+脚本文件执行命令
[root@localhost sh]# bash hello.sh
Hello world!
[root@localhost sh]# 
[root@localhost sh]#

用shell脚本写的一个俄罗斯方块游戏:game.sh:

2.2多命令操作案例

需求:

##先把目录创建好:
[root@localhost sh]# cd 
[root@localhost ~]# cd /home
[root@localhost home]# mkdir atguigu
##开始写脚本代码:
[root@localhost ~]# cd sh
[root@localhost sh]# touch batch.sh
[root@localhost sh]# vim batch.sh
#!/bin/bash
cd /home/atguigu/
touch banzhang.txt
echo "I love cls" >> banzhang.txt
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                                                                         
"batch.sh" 7L, 86C 已写入   
[root@localhost sh]# bash batch.sh
##执行完毕开始查看验证脚本是否执行成功:
[root@localhost ~]# cd sh
[root@localhost sh]# bash batch.sh
[root@localhost sh]# cd /home/atguigu
[root@localhost atguigu]# ls
banzhang.txt
[root@localhost atguigu]# vi banzhang.txt
I love cls
~

三、Shell中的变量

Shell变量分为:

  • 系统变量

    方便写复杂脚本的时候直接引用这些变量!
  • 自定义变量
[root@localhost ~]# A=1
[root@localhost ~]# echo $A
1
[root@localhost ~]#
  • 撤销变量:
[root@localhost ~]# A=1
[root@localhost ~]# echo $A
1
##撤销用unset
[root@localhost ~]# unset A
[root@localhost ~]# encho $A
bash: encho: command not found
[root@localhost ~]#
  • 声明静态变量以后,变量不能unset:
##声明静态变量用readonly:
[root@localhost ~]# readonly B=3
[root@localhost ~]# echo $B
3
[root@localhost ~]# unset $B
bash: unset: `3': not a valid identifier
[root@localhost ~]# 
[root@localhost ~]# d="i love you"
[root@localhost ~]# echo $d
i love you
[root@localhost ~]#

3.1特殊变量:

用于接收shell脚本文件执行时传入的参数:$n

[root@localhost sh]# bash parameter.sh
[root@localhost sh]# vi parameter.sh
#!/bin/bash
echo $0
echo "输入的第一个参数:$1"
echo "输入的第二个参数:$2"
echo "输入的第11个参数:${11}"
~                                                            
~                                                            
~                                                            
~                                                            
                                                            
"parameter.sh" 7L, 135C written
[root@localhost sh]# bash parameter.sh
[root@localhost sh]# bash parameter.sh 10 20 30 40 50 60 70 80 90 10 22
parameter.sh
输入的第一个参数:10
输入的第二个参数:20
输入的第11个参数:22


Shell编程(下)+https://developer.aliyun.com/article/1623582

目录
相关文章
|
19天前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
18天前
|
Shell Linux
Linux shell编程学习笔记30:打造彩色的选项菜单
Linux shell编程学习笔记30:打造彩色的选项菜单
|
3天前
|
Shell
Shell编程(下)
Shell编程(下)
23 1
|
16天前
|
Shell Linux 开发工具
|
16天前
|
监控 Unix Shell
shell脚本编程学习
【10月更文挑战第1天】shell脚本编程
43 12
|
18天前
|
Shell Linux
Linux shell编程学习笔记82:w命令——一览无余
Linux shell编程学习笔记82:w命令——一览无余
|
1月前
|
存储 Unix Shell
shell脚本编程基础
【9月更文挑战第4天】
38 12
|
1月前
|
Shell Linux
Shell 编程 编写hello word
Shell 编写hello word
42 5
|
2月前
|
Shell KVM 虚拟化
Shell 数组编程
【8月更文挑战第22天】 Shell 数组编程
46 10
|
2月前
|
Shell 数据处理 C++
【震撼揭秘】Python正则VS Shell正则:一场跨越编程边界的史诗级对决!你绝不能错过的精彩较量,带你领略文本处理的极致魅力!
【8月更文挑战第19天】正则表达式是文本处理的强大工具,在Python与Shell中有广泛应用。两者虽语法各异,但仍共享许多基本元素,如`.`、`*`及`[]`等。Python通过`re`模块支持丰富的功能,如非捕获组及命名捕获组;而Shell则依赖`grep`、`sed`和`awk`等命令实现类似效果。尽管Python提供了更高级的特性和函数,Shell在处理文本文件方面仍有其独特优势。选择合适工具需根据具体需求和个人偏好决定。
31 1