一、vm安装、centos6.8
下载地址:https://www.vmware.com/cn.html
- 终端的使用
(1)、点击鼠标右键,在弹出的对话框中选择在终端打开,即可打开终端。
(2)在终端中可以选择—编辑—侧写首选项---更改终端字体的大小,页面背景颜色。
二、终端的联网
(1)在桌面的右上角,点击电脑,选择system eth0就可以成功的连接网络。
文件系统与目录结构
Windows:
C: \ \
Linux:有根目录 /
安装Xshell进行远程访问
- 在linux终端中获取ip地址(使用ifconfig)
-
ifconfig
- 在Xshell中点击文件—新建—在对话框中选择名称进行输入---在主机中输入linux的ip地址
- 登陆用户名—输入密码即可远程访问。
-
(Xshell设置连接时的参数:ssh;22)
-
安装Xftp进行文件的上传和下载
-
登陆用户名—输入密码即可远程访问。
-
(Xftp设置连接时的参数:sftp;22)
二、为什么要安装VMware—tools?
可以直接使用粘贴命令在windows和Linux系统之间
可以设置windows和Linux的共享文件夹
步骤:
1.点击安装VMware—tools
2.找到计算机--文件系统—把安装包复制在opt文件夹中—解压此安装包—运行VMware install.pl—点击在终端进行运行
3.安装完成过后使用reboot命令重启即可使用
设置windows和Liunx的共享文件夹
1. 可以在windows磁盘上新建文件夹。
2. 找到centos的虚拟机—设置—选项—选择共享文件夹---点击总是启用---找到windows里面的共享文件夹。
3. 在centos中---计算机---文件系统---mnt文件夹—hgfs文件夹—即可读写共享的文件。
三、vi与vim编译器
所有的Linux系统都会内建vi文本编辑器
- 正常模式(一般模式):使用vi或者vim打开一个文本就进入正常模式
- 插入模式(编辑模式):在正常模式下输入i就可以进入插入模式,才能进行文本的编辑。插入模式下输入ESC返回一般模式(正常模式)。
- 命令模式:在正常模式(一般模式)下输入(按住shift+ :)“:”就能进入命令模式。
注意: Vim编辑器是vi的增强版本,可以以颜色区分关键或者特殊内容。
注意(wq q q!)
Wq:写入数据并进行保存。
q:已经存在的文件打开查看后使用q进行退出。
q!:修改已经存在的文件不保存并退出。
vi或者vim常用快捷键
1、拷贝当前行yy,拷贝当前向下5行,使用“5yy”进行粘贴
(粘贴的快捷键使用“p”)注:在正常模式下进行
2、删除当前行dd,删除当前5行,使用“5dd”
3、在命令模式下,设置文件显示行号set nu,不显示行号set nonu
4、在文件中输入内容,然后又撤销这个动作,使用“u”
(注:在编辑模式里输入内容,在正常模式下输入“u”)
四、关机重启与用户登录注销
关机重启基本介绍:
Shutdown -h now 立该进行关机
shutdown -h 1 "1分钟后会关机了"
shutdown -r now 现在重新启动计算机
halt 关机,作用和上面一样
reboot 现在重新启动计算机
init 0 关机
init 6 重新启动
五、用户管理—创建用户指定密码(组)
(1)Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
(2)Linux的用户需要至少要属于一个组。
用户管理—创建用户
创建用户: useradd 用户名 useradd at
细节说明
(1)当创建用户成功后,会自动的创建和用户同名的家目录
(2)也可以通过useradd -d 指定目录新的用户名,给新创建的用户指定家目录
用户管理—删除用户
(1)删除用户、保留家目录 userdel 用户名
(2)删除用户以及用户主目录(userdel -r 用户家目录)
用户管理—查询切换用户
(4)查询用户信息(id 用户名)
例如:查询root用户信息
注意:当用户不存在,会显示无此用户。
(5)切换用户
5.1使用 su - 用户名 可以切换用户(注意 - 的左右两边是空格)
5.2需要返回原来的用户时,需要使用exit指令
5.3权限高的用户切换到权限低的用户不需要输入密码,反之则需要。
常用命令(mkdir、rmdir)
Pwd:显示当前的绝对路径
绝对路径:是从根目录开始定位
cd /home:使用的是绝对路径进入home文件
相对路径:从当前的目录定位到所需要的目录cd.. /home
使用的是相对路径进入home文件
Cd ..回到当前目录的上一级
cd或者cd ~:回到自己的家目录
mkdir 需要创建的目录
mkdir -p 创建多级目录(mkdir -p home/mm/kk)
【同时建mm与kk】
rmdir指令:删除空目录
rmdir要删除的空目录
注意:rmdir是删除空目录,如果目录下有内容时候是无法删除的,则需要使用rm-rf来删除非空目录
组的创建与删除,及默认界面
1.增加组 groupadd 组名
groupadd mm
2.删除组 groupdel 组名
groupadel mm
3.修改用户组 usermod -g 用户组名 用户名
usermod -g aa mm
4.增加用户时、直接指定组名
(注意:先创建组名、再指定)
useradd -g 组名 用户名
用户组的配置文件: vim /etc/group
Linux系统运行级别
0:关机
1:单用户(找回密码)
2:多用户(无网络服务)
3:多用户有网络服务
4:保留
5:图形界面
6:重启
注意:运行级别中最常用是3和5
注意:是因为我们设置了linux运行级别的配置文件 为5
将运行级别5转换为3--init 3
/etc/inittab
思考:启动linux系统就是多用户有网络服务?
将/etc/inittab 中的5改为3
(id:5:改为id:3:)
思考:如何找回密码?
开机
在加载的时候输入回车键
看到界面输入e
进行新的界面选择第二行
再次输入e
进行新界面按空格输入 1再按回车键
回到原来页面再次输入b
就会进入到单用户模式。
touch指令
touch指令:创建空文件
- 基本语法: touch 文件名称
touch asd.txt
- 创建多个空文件
touch love_{1..10}_shiyanlou.txt
3.cp:拷贝文件到指定的目录[同一文件夹]
基本语法: cp 拷贝的文件 文件夹
4.递归复制整个文件
基本语法:cp –r 整个文件
5.强制覆盖不进行提示: \cp
rm指令:移除文件或者目录
基本语法:rm 要移除的文件
移除文件不进行提示: rm -f 要移除的文件
删除整个目录: rm -rf 目录
mv指令:移动文件目录或者重命名
基本语法: mv oldName newName 重命名
基本语法: mv 移动的文件 /目录 移动文件到指定目录
cat指令 : 查看文件是以只读的方式打开
常用选项: -n:显示当前行号
more:它是以全屏的方式按页显示文本文件的内容
enter:向下显示下一行
空格键: 翻页
Ctrl+B : 返回上一页
Ctrl+F : 滚动到下一页
> 输出重定向:将当前目录下显示的内容覆盖到文件里面,如果该文件不存在、此命令就会直接创建文件
Eg:ls -l>mm
方法学习Eg:touch /home/mm
vim /etc/mm
I esc :wq
ls -l>mm.txt
>> 追加 :不会覆盖原有文件的内容、追加到文件的尾部。
命令cat、echo、cal、head、tail、date
cat 文件1>文件2
cat /etc/aa>bb.txt
(将文件1里面的内容写入文件2,并且覆盖原有文件)
[ vim /etc/profile写入到a.txt]
echo“内容”>>文件(将内容写在文件的后面)
echo hello>>bb.txt
echo “内容”>文件(将双引号里面的内容写入)
echo “wd”>bb.txt
cal指令:显示当前日历
cal 2023(显示2023的月与日)
head指令:用于显示文件开头的部分,默认显示10行。
[head /etc/文件名]
head -n5 (显示前五行)
tail指令:用于显示文件结尾部分,默认显示10行。
[tail /etc/ 文件名]
tail -n5(显示前5行)
[tail -n5 /etc/ 文件名]
tail -f指令:实时追加指令(用于查看文件是否有变化)
date指令:显示当前的日期信息
date ”+%Y-%m-%d”
显示年月日:2023-9-10
date ”+%Y-%m-%d %H:%M:%S”
显示年月日时分秒
更改系统时间:date -s 要改的时间
find、grep指令、管道符命令
(ls -lh 查内存大小)
find指令
-name:按照指定的文件名来查找
find 查找的范围 -name 要查找的文件
(find /home -name a.txt)
-size:按照指令的文件的大小进行查找
find 目录 -size 内存值
(find / -size 20M)
+内存值:大于“+20M”
-内存值:小于“-20M”
内存值:等于“20M”
Find 目录 -name *.txt
(find / -name *.txt)
grep指令
grep指令:过滤查找的内容{-n显示行号}
管道符命令:“|”表示将前一个命令处理的结果交给后一个命令。
(cat wd.txt | grep -n 查找的具体内容)
解压与压缩包(zip、gzip、tar)
压缩与解压
gzip/gunzip
zip/unzip
tar
gzip用于压缩文件,只能将文件压缩成“.gz”文件(123.gz),默认是不保留原文件,直接变成压缩文件。
如果保留源文件:gzip -c 原文件>源文件.gz
gunzip:用于解压文件,默认会删除压缩文件
gunzip -c 解压文件不删除文件压缩文件
gunzip -c 解压文件>原文件
(gunzip -c a.gz>a.txt)
列出压缩信息,不进行解压:gunzip -l
zip:用于压缩文件会压缩成“.zip”文件
unzip:用于解压文件
zip -r:压缩目录下所有的文件夹
zip -r 包名/目录(zip -r prakage.zip /home)
unzip -d:解压到指定的目录
unzip -d /指定的目录 要解压的包名
(unzip -d /opt/… 文件名)
tar:命令用来建立,还原备份文件。格式为“tar [选项] [文件]”
tar -zcvf 压后文件名 要压文件1 要压文件1
(得到压后文件名.tar.gz)
tar -zxvf 解压 -c 目录
组的管理
useradd
group
touch
mkdir
在Linux系统的每一个用户必须属于一个组,每一个文件必须有文件所有者、所在组、其它组
修改文件所有者 chown 用户名 文件名
修改文件所在组 chgrp 组名 文件名
其它组:除文件的所有者和所在组的用户外系统的其它用户都是这个文件的其它组。
- rw – r –- r- -. 1ly teacher 0 9月 27 21:45 op.txt
-:表示普通文件
d:表示目录
c:表示字符设备
b:表示块文件、磁盘
rw:文件的所有者的权限(可读可写)
r- -:表示文件所在组的其它用户权限,只有读权限
r- -:表示文件的其它组的用户权限,只有读权限
1:如果是文件,表示硬链接的数;如果是目录,则表示该目录数。
ly:代表文件的所有者,teacher代表文件所在组
0:表示的是文件的大小,表示0个字节,如果是目录则是4096.
9月 27 21:45 :表示文件最后一次修改的时间
文件的权限的修改
修改权限的命令:chmod
d:目录文件 rwx:读写执行 r-x:读和执行
第一种方式:+ - =变更权限
u:所有者 g:所在组 o:其它人 a:所有人
chmod u=rwx,g=rx,o=x 文件目录名
chmod o+w 文件目录名
chmod a-x 文件目录名
1. 给abc.txt文件的所有者读写执行的权限,所在组读执行的权限,给其它组读执行的权限
第二种方式:通过数字进行变更权限
规则:r=4 w=2 x=1
rwx=4+2+1
chmod u=rwx,g=rx,o=x
chmod 751 文件目录名
例如:将/home/abc.txt文件权限修改为 rwxr-xr-x
通过数字的方式实现
chown:修改文件的所有者
chown -R :递归更改目录和目录下的文件的所有者
1. 请将/home/cc目录里的所有文件的所有者都修改为Sally
chgrp:更改文件或者目录的所在组
chgrp -R :递归更改目录和目录下的文件的所在组
crond 任务调度
crontab:指在系统某个时间执行的特定的命令或程序。
Eg:每隔一分钟就将当前的日期和日历追加到/home/cc/a.txt文件中。
crontab [选项]
-e 编辑crontab定时任务
-l 查询crontab任务
-r 删除当前用户所有的crontab任务
创建定时任务
crontab -e 然后进行编辑
查看定时任务
crontab -l
删除所有定时任务
crontab -r
重启定时任务
service crond restart [重启任务调度]
设置任务调度文件:/etc/crontab
设置个人任务调度。执行crontab -e 命令
接着输入任务到调度文件
如: */1****ls -l /etc/>/tmp/to.txt
意思是说每小时的每分钟执行ls -l /etc/ > /tmp/to.txt命令
步骤如下:
crontab -e
*/1****ls -l /etc/>/tmp/to.txt
项目含义范围:
第一个 * 一小时当中的第几分钟 0-59
第二个 * 一天当中的第几小时 0-23
第三个 * 一个月当中的第几天 1-31
第四个 * 一年当中的第几月 1-12
第五个 * 一周当中的星期几 0-7(0和7都代表星期日)
特殊符号含义:
* 代表任何时间。比如第一个"*"就代表一小时中每分钟都执行一次的意思。
, 代表不连续的时间。比如"0 8,12,16 * * * * 命令",就代表在每天的8点0分、12点0分、16点0分都执行一次命令
- 代表连续的时间范围。比如"0 5 * * 1-6 命令",代表在周一到周六的凌晨5点0分执行命令
*/n 代表每隔多久执行一次。比如"*/10 * * * * 命令",代表每个10分钟就执行一次命令
特定时间执行任务案例时间含义:
45 22 * * * 命令 在22点45分执行命令
01 7 * * 1 命令 每周1的17点0分执行命令
0 5 1 15 * * 命令 每月1号和15号的凌晨5点0分执行命令
40 4 * * 1-5 命令 每周一到周五的凌晨4点40分执行命令
*/10 4 * * * 命令 每天的凌晨4点,每隔10分钟执行一次命令
0 0 1,15 * 1 命令 每月1号和15号,每周1的0点0分都会执行命令。
注意:星期几和几号最好不要同时出现,因为他们定义的都是天。非常容易让管理员混乱
例题1、每隔1分钟,就将当前的日期信息,追加到/home/mydate文件中。
操作步骤如下:
先编写一个文件 mytask1.sh
date >> /home/mydate
ls -l
给mytask1.sh一个可执行权限
chmod u+x mytask1.sh
crontab -e
调用文件
*/1 * * * * /home/mytask1.sh
例题2、每隔1分钟,将当前日期和日历都追加到/home/mycal文件中。
操作步骤如下:
先编写一个文件 mytask2.sh
date >> /home/mycal
cal >> /home/mycal
给mytask2.sh一个可执行权限
chmod u=rwx mytask2.sh
crontab -e
调用文件
*/1 * * * * /home/mytask2.sh
磁盘分区
[知识补充:mbr分区1-4 gpt分区128]
Linux中磁盘分为IDE磁盘和SCSI磁盘目前基本上都i是SCSI的磁盘。
查询Linux系统中的磁盘分区的命令:lsblk -f
(记忆小技巧:老师不离开)
IDE磁盘:
标识为hdx~开头,
其中hd来表明分区的设备类型,
x为盘号
a:表示为基本盘
b:表示基本从属盘
c:表示为辅助盘
d:辅助盘从属盘
~:代表分区1-4表示
如:hda3:一个IDE磁盘上的第三个主分区或扩展分区。
SCSI磁盘:
标识为sdx~开头
其中hd来表明分区的设备类型,
x为盘号
a:表示为基本盘
b:表示基本从属盘
c:表示为辅助盘
d:辅助盘从属盘
~:代表分区1-4表示
sda1:通常指磁盘中的分区,也就是第一个分区
ext4:是Linux系统下的日志文件
新建一个磁盘2G的将其分一个区,然后挂载到/home/newdisk.
- 虚拟机添加磁盘
(虚拟机—设置—硬盘—添加)
- 分区:fdisk /dev/sdb
(m n p 1 w)
M:显示命令列表
D:删除分区
P:显示磁盘分区
W:写入磁盘并退出
N:新增分区
- 格式化 磁盘
命令:mkfs -t ext4/dev/sdb1
- 挂载:
- 首先新建一个文件:mkdir /home/newdisk
- Mount /dev/sdb1 /home/newdisk
取消挂载:umount /dev/sdb1
设置永久挂载
通过/etc/fstab修改 文件实现挂载
/devsdb1 /home/newdisk ext4 defaults 0 0
磁盘查询相关指令
1、查询系统磁盘整体使用情况df(df -lh)
2、查询指定目录的磁盘占用情况du
-s指定目录占用大小的汇总
-h带计量的单位
-a带文件
--max-depth=1 查询目录的深度为1
-c列出明细的同时增加汇总
(ls -l /home|grep”^_”|wc -l)
2、统计/home文件下的个数、包括子文件夹里的
(ls -lR /home|grep”^_”|wc -l)
3、统计/home文件夹下的目录数
(ls -l /home|grep”^d”|wc -l)
4、统计/home文件下的目录个数、包括子文件夹里的
(ls -lR /home|grep”^d”|wc -l)
网络配置说明
指定固定IP
说明:直接修改配置文件来指定IP,并可以连接到外网(程序员推荐)
编辑:Vim /etc/sysconfig/network-scripts/ifcfg-eth0 ConOS
vim /etc/network/interfaces
要求:将IP地址配置成静态的,ip地址为192.168.184.130
vim /etc/network/interfaces
静态分配的配置方法
auto eth0
iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0
gateway 192.168.0.1
保存退出
重启网络服务
service network restart
JDK、Tomcat、Eclipse
Jdk安装
先将软件通过xftp5 上传到 /opt 下
解压缩到 /opt
tar -zxvf jdk-7u79-linux-x64.gz
境变量的配置文件vim /etc/profile
JAVA_HOME=/opt/jdk1.7.0_79
PATH=/opt/jdk1.7.0_79/bin:$PATH
export JAVA_HOME PATH
测试是否安装成功
编写一个简单的Hello.java 输出"hello,world!"
tomcat的安装
1.将apache-tomcat-7.0.70.tar.gz解压到/opt
tar -zxvf apache-tomcat-7.0.70.tar.gz
2.启动tomcat ./startup.sh
cd /opt/apache-tomcat-7.0.70/bin
启动tomcat ./startup.sh
3.打开火狐浏览器
输入localhost:8080可以看见服务器
因为tomcat的服务器默认端口8080
4.使用外网访问tomcat服务器
首先在windows上输入http://192.168.81.131
访问服务器、发现访问不了
让防火墙开放端口8080
vim /etc/sysconfig/iptables
重启防火墙
就可以使用外网访问
Eclipse的安装
1.解压缩到/opt
tar -zxvf eclipse-jee-mars-2-linux-gtk-x86_64.tar.gz
2.启动eclipse,配置jre和server
启动方式1:创建一个快捷方式:进入opt目录下,找到eclipse文件夹,单击eclipse
启动方式2:进入解压后的eclipse 文件夹,然后执行 ./eclipse即可。
3.编写Hello world 程序并测试成功!
Shell编程
Shell是什么?
Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。
脚本格式要求
1) 脚本以#!/bin/bash开头
2) 脚本需要有可执行权限
创建一个Shell脚本,输出helloworld
mkdir shell
方式1(输入脚本的绝对路径或相对路径)
首先要赋予helloworld.sh 脚本的+x权限
方式2(sh+脚本)
说明:不用赋予脚本+x权限,直接执行即可。
为什么要学习Shell编程
1、Linux运维工程师在进行服务器集群管理时,需要编写Shell程序来进行服务管理。
2、对于Java EE 和python程序员来说,工作的需要,你的老大会要求你编写一些Shell脚本进行程序或者是服务器的维护,比如编写一个定时备份数据库的脚本。
Shell是什么?
Shell是一个命令行解释器,它为用户提供一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。
Shell 编程脚本格式要求
脚本格式要求:
1、脚本以#!/bin/bash 开头
2、脚本需要有执行的权限
方式1:首先要赋予myshell.sh可以执行的权限 +X的权限
方式2:以绝对路径执行
执行的方式2:(sh+脚本)不需要赋予脚本 +X的权限。
Shell变量
Shell的变量的介绍
Linux Shell 中的变量分为,系统变量和用户自定义变量。
系统变量: HOME 、HOME、PWD、SHELL、USER等等
比如:echo $HOME 等用法
显示当前shell中所有的变量: set
shell变量的定义规则
变量=值 #定义变量 注意:中间不能用空格隔开
unset 变量 #撤销变量
readonly 变量 #声明静态变量
注意:静态变量不能unset
shell变量命名规则
变量名称可以由字母、数字和下划线组成,但是不能以数字开头。
等号两侧不能有空格
变量名称一般习惯为大写
普通变量的定义变量
创建A变量与撤销A变量
#!/bin/bash
a=11 #定义变量a
echo "a = $a" #输出a
unset a #撤销变量a
echo "unset a = $a" #输出a
静态变量
readonly 变量 #声明静态变量
注意:readonly 变量 #声明静态变量
注意:静态变量不能unset
例题1、声明静态变量A,静态变量不能unset
#!/bin/bash
readonly A=12
echo "readonly A = $A"
unset A
echo "readonly A= $A"
将命令的返回值赋值给变量
A=`ls -la` #反引号,运行里面的命令,并把结果返回给变量A
A=$(ls -la) #等价于反引号
实例
#!/bin/bash
A=`date`
echo "A = $A"
B=$(date)
echo "B = $B"
export 变量名=变量值 #将shell变量输出为环境变量
source 配置文件 #让修改后的配置信息立即生效
echo $变量名 #查询环境变量的值
查看环境变量TOMCAT_HOME的值
source /home/shell/tomcat.sh
echo $TOMCAT_HOME
3、在另外一个shell程序(/home/shell/usetomcat.sh)中使用TOMCAT_HOME
#!/bin/bash
A=$TOMCAT_HOME
echo "A = $A"
例题、求出命令行输入两个参数的和
#!/bin/bash
A=$1
B=$2
SUM=$[A+B]
echo "sum = $SUM"
运算符
$((运算式))
$[运算式]
expr m + n 加
expr m - n 减
expr \* 乘
expr / 除
expr % 取余
注意:expr运算符之间有空格
例题1、
#!/bin/bash
M=100
N=5
echo "M + N = $((M + N))"
echo "M - N = $[M - N]"
MN1=`expr $M \* $N`
echo "M * N = $MN1"
C=`expr $M / $N`
echo "M / N = $C"
D=`expr $M % $N`
echo "M % N = $D"
read读取控制台输入
read 选项 参数
-p 指定读取值时的提示符(阻塞)
-t 指定读取值时等待的时间(秒)
如果没有在指定的时间内输入,就不再等待了
例题1、读取控制台输入一个num值
#!/bin/bash
read -p "请输入一个数:" NUM1
echo "你输入的值是:$NUM1"
例题2、读取控制台输入一个num值,在10秒内输入。
#!/bin/bash
read -t 10 -p "请输入一个数:" NUM1
echo "你输入的值是:$NUM1"
if判断条件(比较)
两个整数的比较
字符串比较
-lt 小于
-le 小于等于
-eq 等于
-gt 大于
-ge 大于等于
按照文件权限进行判断
-r 有读的权限
-w 有写的权限
-x 有执行的权限
按照文件类型进行判断
-f 文件存在并且是一个常规的文件
-e 文件存在
-d 文件存在并是一个目录
例题1、判断 "ok"和"ok"是否相等
#!/bin/bash
if [ "ok" = "ok" ]
then
echo "相等"
fi
例题2、23是否大于22
if [ 23 -gt 22 ]
then
echo "大于"
fi
例题3、判断文件是否存在
if [ -e /home/shell/aaa.txt ]
then
echo "存在"
fi
if elif 条件判断
if [ 条件判断式 ]
then
程序
fi
或者
if [ 条件判断式 ]
then
程序
elif [ 条件判断式 ]
then
程序
fi
case
case $变量名 in
"值1")
程序1
;;
"值2")
程序2
;;
..........
"值n")
程序n
;;
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
实例
#!/bin/bash
case $1 in
1)
echo "星期1"
;;
2)
echo "星期2"
;;
3)
echo "星期3"
;;
*)
echo "其他"
;;
esac
for 循环
语法一
for 变量 in 值1 值2 ... 值n
do
程序
done
例题、打印命令行输入的参数 $1 $2
#!/bin/bash
for i in "$1"
do
echo "the num is $1"
done
for j in "$2"
do
echo "the num is $2"
done
语法二
for((初始值;循环控制条件;变量变化))
do
程序
done
例题、从1加到100并输出结果
#!/bin/bash
SUM=0
for((i=1;i<=100;i++))
do
SUM=$[$SUM+$i]
done
echo "最终结果是:$SUM"