Linux入门-shell编程入门-合适小白

一、变量的运用

1. 变量命名

界说变量时,变量名不加美元符号($,PHP言语中变量需求),如:

your_name="yikoulinux"

留神,变量名和等号之间不能有空格,这或许和你了解的悉数编程言语都不相同。一同,变量名的命名须遵从如下规矩:

  • 命名只能运用英文字母,数字和下划线,首个字符不能以数字开端。
  • 中心不能有空格,能够运用下划线(_)。
  • 不能运用标点符号。
  • 不能运用bash里的要害字(可用help指令检查保存要害字)。
  • 变量称谓一般习气为大写

有用的 Shell 变量名示例如下:

RUNOOB
LD_LIBRARY_PATH
_var
var2

无效的变量命名:

?var=123
user*name=runoob

2. 常用变量

Linux Shell 中的变量分为:体系变量和用户自界说变量。

  1. 体系变量:HOME、HOME、PWD、SHELL、SHELL、USER 等等比方linux创建文件: echo $HOME 等等..

  2. 用户自界说变量:

  1. 界说变量:变量=值

2)显现当时 shell 中悉数变量:set
3)linux常用指令吊销变量:unset 变量
4) 声明elements翻译静态变量:readonl变量泵y 变elementselement什么意思中文,留神:不能 unset

  1. 将指令的回来值赋给变量(要害)

除了变量名显式地直接赋值,还能够用句子给变量赋值,如:
1element是什么牌子
A=ls -la
反引号,作业里边的指令,并把作用回来给变量 A
2)

A=$(ls -la)

$等价于软件测验反引号

3)

for fileelement是什么牌子 in `ls /etc`

for file in $(ls /etc)

以上句子将 /etc 下目录的文件名循环windows7出来。

3. 举例

例1:
Linux入门-shell编程入门-合适小白
意义如下:

  1. 界说一个变量名为name的变量,值elementary是什么意思为一口linux
  2. 输出变量name的值
  3. 界说一个变量名为number的变量,初始值为22
  4. 输出变量number的值
  5. 直接输出带变量Windows的字符串
  6. 运用双引号输出带变量的字符串
  7. 运用单引号输出带变量的字符串
  8. 运用变量名双引号输出软件开发带不存在的变量的字符串,不存在的变量默许为空
  9. 运用双引号来声明字符串中的变量
  10. 运用大括号{&变量名},声明字符串中的变量

留神:
上述变量是暂时变量,当关闭终端后,变量就会消失。

例2:
删去变量并检查指定变量
Linux入门-shell编程入门-合适小白

  1. unset name 删去变量name
  2. 检查name变量

二、字符串的操作

在做shell批处理程序时分,经常会涉及到字符串相关操作。有许多指令句子,如:awk,sed都能够做字符串各种操作。

其实shell内置一系列操作符号,能够抵达相似作用,我们知道,运用内部操作符会省掉主张外部程序等时刻,因而速度会非element滑板常的快。

1. 字符串操作(长度,读取,替换linux必学的60个指令

表达式 意义
${#string} $string的长度
${string:position} 在 $string中, 从方位$position开端提取子串
${string:position:length} 在$sWindowstring中, 从方位$position开端提取长度为$length的子串
${string#substring} 从变量$string的开端, 删去最短匹配$substring的子串
${string##substring} 从变量$strinlinux常用指令g的开端, 删去最长匹配$substring的子串
${string%suelement滑板bstring} 从变量$st变量的界说ring的完毕, 删去最短匹配$substring的子串
${string%%substring} 从变量$string的完毕, 删去最长匹配$substring的子串
${string/substring/replacement} 运用$replacement, 来替代榜首个匹配的$substri软件应用ng
${string//substring/replacement} 运用$replacement, 替代悉数匹配的$substring
${strinwindows是什么意思g/#sub变量值string/replaceelementanimationment} 假定$string的前缀linux匹配$substring, 那么就用$replacement变量值来替代匹配到的$substring
${s软件库tring/%substring变量类型有哪些/replacement} 假定$string的后缀匹配$substring, 那么就用$replacement来替代匹配到的$substring

阐明:”* $substwindows体系ring”能够是一个正则表达式.

2. 字符串操作举例

a)windows更新有必要吗 核算字符串长度

root@ubuntu:/home/peng# test='I love china'
root@ubuntu:/home/peng# echo ${#test}
12

Linux入门-shell编程入门-合适小白

${#变量名}得到字符串长度windows许可证行将过期怎样办

b) 截取字串

root@ubwindows怎样激活untu:linux体系/home/peng# test='I love china'
root@ubuntu:/home/peng# echo ${test:5}
e china
root@ubuntu:/home/peng# echo ${test:5:10}
e china
root@ubuntu:/home/pe软件技术ng#
root@ubuntu:/home/peng# echoelement什么意思中文 ${test:4:10}
ve china

Linux入门-shell编程入门-合适小白

${变量名:开端:长度}windows许可证行将过期怎样办得到子字linux重启指令符串

c软件库) 字符串删去

root@ubuntu:/home/peng# t软件商铺est='c:/windows/boot.ini'
root@ubuntu:/element什么意思中文h变量与函数ome/peng# eelementuicho ${test#linux是什么操作体系/}
c:/windows/boot.ini
root@ubuntu:/home/peng# echo ${test#*/}
windows/boot.ielementanimationni
root@ubuntu:/ho变量泵me/软件技术peng# echo ${telinux是什么操作体系st##*/}
boot.ini
root@ubuntu:/home/p软件技术专业eng# echo ${test%/*}
c:/windows
root@ubuntu:/home/peng# echelementary schoolo ${test%%/*}
c:

Linux入门-shell编程入门-合适小白

${变量名#substring正则表达式}从字符串开端开端配备subswindows体系tring,删去匹配上的表达式。
${变量linux必学的60个指令名%substring正则表达式}从字符串完毕开端配备substring,删去匹配上的表达式。

留神:

${test##*/},${test%/*} 分别是得到文件名,或许目录地址最简略办法。

d) 字符串替换

root@ubuntu:/homelementuie/peng# test='c:/windows/boot.ini'
root@ubuntu:/home/peng# echo ${test///}
c:windows/boot.ini
root@ubuntu:/holinux创建文件me/peng# echo ${test////}
c:windowsboot.ini

Linux入门-shell编程入门-合适小白

${变量/查找/替换值} 一个“/”标明替换榜首个,”//”标windows7明替换悉数,当查找中出现了:”/”请加转义符”/”标明。

留神:
linux常用指令符串的方位是从0开端,-1标明该字符串毕竟一个方位;
截取字符串的时分,是左闭右开的,从左面的方位开端,软件一直到右边的方位完毕,不包括右边的方位。

三、 脚本的创建和实施

shell脚本并不能作为正式的编程言语Windows,因为它是在Linux的shell中作业的,所以称他为shell脚本。
事实上,shell脚本就是一些指令的集结。
我们一般把悉数的操作都记录到一个文档中,然后去调用文档中的指令,这样windows许可证行将过期怎样办软件应用步操作就能够完成了
一般shell脚本都是放在/usr/local/sbin的目录下。

1) shell脚本的树立

在linux体系中,shell脚本(bash shell程序)一般是在编辑器(如vi/vim)中编写,由unix/linux指令、bashelementanimation shell指令、程序结构操控句子和注释等内容组成,举荐用vim编辑器linux重启指令

2) 脚本开端(榜首行)windows7旗舰版

一个规windows10激活密钥范的shell脚本的榜首行会指出由哪个程序(阐冥具)来实施脚本中的内容,在linuxlinux指令 b变量名的命名规矩ash编程中一般为:

#!/bin/bash

#!/bin/sh  <==255个字符以内

其间开端的”#!”又称为幻数,在实施bash脚本的时分,内核会根据”#!”后的阐冥具来承认该用哪个程序阐明脚本中的内容,
留神:
这一行有必要在每个脚本顶端windows10激活密钥的榜首行,假定不是榜首行则为脚本注释行,例如下面的比方。

root@ubuntu:/home/peng# cat test1.sh
#!/bin/bash
echo "scajy startwindows更新"
#!/bin/bash      <==写到这儿就是注释
#!/bin/sh
echo "scajy en:"

sh和bash的差异

root@ubuntu:/home/peng# ls -l /bin/sh
lrwxrwxrwx 1 root roo软件库t 4 Sep 21  2015 /bin/sh -> ba软件库sh

提示:sh为bash的软联接,这儿举荐用标准写法#!/bin/bash

Bash是GNU/Linux默许的shell,和Bourne shell (sh)兼容,Bash采用了Korn shell (Ksh)和C shell(csh)的特征。符合IEEE POISIX P10003.2/ISO 9945.2 shell and telements翻译ools 标准。

Centos和redhat linux 下默许的shell 均为bash 因而,在写shell脚本的时分,我们的脚本的开端也能够不加#!/belement什么意思中文in/bash。但假定当时的shell非你默许的shell时,比方tcsh,那么久有必要要写#!了。软件技术不然脚本文件就只能实施一些指令的集结,不能够运用shell内建的指令了,主张读者养成习气,不管什么脚本最好都加上开端言语标识,这在后文的shell编程标准中会再linux指令次提到。
假定脚本的开端不指定解析器,那么,就要用对应的阐冥具来实施脚本。例如:bash test.sh

3) 脚本注释

在shell脚本中,跟在(#)#号后边的内容标明注释,用来对脚本进行注释阐明,注释部分不会被实施,仅仅是给人看的,注释可自一行element是什么牌子,也能够跟在脚本指令后边与指令在同一行,开发脚本时,假定没linux体系安装有注释,其他人就很难理解脚本毕竟在做什么,时刻长了自己也会忘掉。因而,我们要尽量成为所做的作业(脚本等)书写注释的习气,不光是便当他人,也是便当自己。不然写完一个脚本后或许后就记不起脚本的用处了,在从头阅elementary是什么意思览也会糟蹋许多名贵时刻。关于团队的协作也晦气。

4) 举例

创建文件first.sh,并复制如软件商铺下载下信息到文件:

#cd usr/local/变量名sbin
# vim first.sh
#! /linux必学的60个指令bin/bash
##this is my first shell scri变量与函数pt
#wirtenlinux重启指令 by 一口Linux 2021.5.3
dawindows7te
echo "Hello world"

shell脚本一般以.sh为后缀名

实施脚本
以下几种办法都能够:

#sh fir软件库st.sh
#bawindows更新sh first.sh
#./first.sh
#./first.sh

会报权限不行
能够:

#chmod +x变量名的命名规矩 first.sh

四、环境变量的运用

1. 知识点详解

  1. Linux Shell 中的变量分linux指令为:体系变量和用户自界说变量。
  2. 体系变量:HOME、HOME、PWD、SHELL、linux操作体系基础知识SHELL、USER 等linux创建文件等比方: echo $HOME 等等..
  3. 用户自界说变量:
1) 界说变量:变量=值
2)显现当时 shell 中悉数变量:set
3)吊销变量:unset 变量windows7旗舰版
4) 声明静态变量:readonly 变量,留神:不能 unset
  1. 界说变量的规矩
1) 变量称谓能够由字母、数字和下划线组成,可是不能变量类型有哪些以数字开端。
2) 等号两头不能有空格
3) 变量称谓一般习气为大写
  1. 将指令的回来值赋给变量(要害)
1)A=`ls -la` 反引号,作业里边的指令,并把作用回来给变量 A
2)A=$(ls -la) 等价于反引号
  1. 设置环境变量的根软件测验本语法:
export 变量名=变Linux量值 (功用描绘:将 shell 变量输出为环境变量)
source 配备windows更新文件(功用描绘:让修改后的配备信息立即收效)
echo $变量名(功用描绘:查询环境变量的值)

2. 操作详解

检查环境变量HOME、PATH的windows7旗舰版值:

root@ubuntu:/home/peng# echo $HOME
/root
root@ubuntu:/home/pen变量g# echo $PATH软件测验
/usr/local/sbin:/usr/l软件工程ocal/bin:/usr/sbin:/usr/bin:变量泵/sbin:/bin:/usr/games:/home/peng/toolcha变量in/gcc-4.6.4/bin:/home/pelementary schooleng/toolchain/arm-cortex_a8/bin

检查windows体系中的环境变量软件测验
Linux入门-shell编程入门-合适小白

检查环境变量PATH中悉数的途径

脚本途径设备举例

办法1:
修改环境环境变量:在Plinux是什么操作体系ATH中增加指定“软件设备”的目录:

root@ubuntu:/home/peng/yikou# pw变量与函数教案d
/home/peng/yikou
root@ubuntu:/home/peng/yWindowsikou# ls
a.sh
root@ubuntu:linux常用指令/home/peng/yikou# sh a.sh
Sun May  2 17:00:14 PDT 2021
Hello wwindows更新有必要吗orld
rlinuxoot@ubuntu:/homelement是什么牌子e/peng/yikou# export PATH=$PATH:/home/p软件工程专业eng/yikou/
root@ubuntu:/home/peng/y软件应用ikoelement什么意思中文u# echo $PATH
/usr/local/sbin:/usr/local/bi软件技术n:/usr/sbin:/windows怎样激活usr/bin:/sbin:/bin:/usr/games:/home/peng/toolchain/gcc-4.6.4/bin:/ho变量泵me/peng/toolchain/arm-cortex_a8/bin:/home/peng/yikou/
root@ubuntu:/home/peng/yikou# a.sh
bash: /home/peng/yikou/a.sh: 权限不行
root@ubuntu:/home/peng/yikou# chmod 777 a.sh 
root@ubuntu:/home/peng/yikou# a.elementuish 
Sun May  2 17:01:34 PDT 2021
Hello world

Linux入门-shell编程入门-合适小白

办法2变量与函数教案
修改环境变量配备文件的办法,使修改后的环境变量永久收效

vim /etc/bash.bashrc

Linux入门-shell编程入门-合适小白

source .bash.rc ,使配备文件从头收效

关闭终端,翻开并从头从头输入:a.sh依旧能够实施。

root@ubuntu:/home/peng/# a.sh 
Sun May  2 17:10:00 PDT 2021
Hello world

五、数学运算

1. 知识点详解

运算符运用的语法:
Linux入门-shell编程入门-合适小白

expr操作符对照表
Linux入门-shell编程入门-合适小白
操作符意义
Linux入门-shell编程入门-合适小白

2. 操作变量的界说详解

  1. 比较大小,只能对整数进行比较,需求加空格,linu变量名的命名规矩x 保存要害字要转义
root@ubuntu:/home/peng/yikou# num1=30
root@ubuntu:/h软件测验ome/peng/ywindows10ikou# num2=50
root@ubuntu:/home/peng/linux是什么操作体系yikou# expr $num1 > $num2

Linux入门-shell编程入门-合适小白

检查上一条指令有没有实施成功:
Linux入门-shell编程入门-合适小白
回来变量的界说0 成功,其他失利

  1. 小于、小于等于、大于等于
expr $linuxnum1 < $num2
expr $num1 <= $num2
expr $num1 >= $num2

Linux入门-shell编程入门-合适小白

  1. 运算 加、减、乘、除
# 加
num1=17
num2=5
expr $num1 + $num2
# 减
num3=`expr $num1 + $num2`
echo $num3
explinux创建文件r $num1 - $numwindows更新2
# 乘
expr $num1 * $num2
expr $num1 / $num2
# 取余数
expr $软件技术num1 % $num2

Linux入门-shell编程入门-合适小白
需求留神事项:

两个小括号的核算办法,要赋值,不然会报错
Linux入门-shell编程入门-合适小白

六、脚本与用户交互

操作指令行参数

1. 读取参数

bash shell用方位参数变量(posit变量之间的联系ional parameter)存储软件技术专业指令行输入的悉数参数,包括程序名。
其间,0标明windows7程序名,0标明程序名,1标明第1个参数,2标明第2个参数,…,2标明第2个参数,…,9标明第9个参数。假定参数个windows7旗舰版数多于9个,有必要如下标明变量:10,{10},{1变量值1},…

#!/bin/bash
# author:一口Linux
for((count = 1; count <= $1; couwindows10激活密钥nt++))
do
echo Theelement是什么牌子 number is $count.
done

实施作用:

Linux入门-shell编程入门-合适小白

修改脚本如下:软件技术专业

echo $1, $2, $3, $4

实施作用如下:
Linux入门-shell编程入门-合适小白

2 读取程序名

首要想到的是运用0,Linux可是0,可是0获取的文件名包括./以及途径等前缀信息,如下:

echo The command entered is: $0
# 作业:./变量与函数
# 输出:The command entered is: ./14.sh

假定想仅得到文件名,而不包括./,能够运用basename指令:

name=`basename $0`
echo T软件技术专业he command entered is: $n软件商铺下载ame
# 作业:./
# 输出:The command entered is: 14.sh

3 特别变量

$#软件应用明指令行参数的个数:
#!/bin/bash
# author:一口Linux
params=$#
echo The number of params is:element是什么牌子 $params
for((i = 1; i <= params; i++))
do
echo The param is: $linux是什么操作体系i
done

实施作用

Linux入门-shell编程入门-合适小白

假定想获取悉数的参数,当然能够运用#和循环逐个变量泵遍历。也能够运用如下两个特别变量:*将Element悉数的指令行参数看作linux创建文件一个整体软件应用存储,而$@将指令行中以空windows7旗舰版变量距离的参数单独存储,如下:

#!/bin/bash
# author:一口Linux
count=1
for param i变量是什么意思n "$*"
do
echwindows7o "$* parameter $count = $param"
count=$[ $elementary schoolcount + 1 ]
done
count=1
for param in "$@"
do
echo "$@ parameter $count = $p变量是什么意思aram"
count=软件测验$[ $count + 1 ]
done

Linux入门-shell编程入门-合适小白

4 底子的读取

read指令软件商铺下载承受从键盘或文件描绘符中的输入数据,将其存储到一个指定变linux重启指令量中。

选项:

-p:指定读取值时的提示变量之间的联系符;
-t:指定读取值时等候的时刻(秒),假定没linux是什么操作体系有在指定的时刻内输入,就不再等候了。。
-n:设置答应输入字符的个变量是什么意思

参数

变量:指定读取值的变量名

操作详解

  1. 例1
#!/bin/bash
# aut变量hor:Element一口Linux
# testing the read option
read -p "Please enter your name: " name
echo "Hwindows7旗舰版elelementslo $name."变量值

实施作用
Linux入门-shell编程入门-合适小白

  1. 例2

read指令中,能够根据需求将输入的数据保存在多个变量中,假定windows更新指定的变量比较少,那么毕竟一个变量将包括余下的悉数输入,如下所示:

#!/bin/bash
# author:一口Linux
# testing the read option
read -p "Enter the v软件库alues: " val1 val2 val3
echo "$val1"
echo "$val2"
echo "$val3"

实施作用:
Linux入门-shell编程入门-合适小白

  1. 归纳比方

提示用户输入一个正整数num,然后核算1+2+3变量泵+…+num的值;有必要对num是否为正整数做判elements翻译别,不符合应当作业再次输入

思路:

  • expr只能对整数进行核算,直接用expr 和一个整数核算获取 $?软件工程专业 的值来判别是否为整数

  • 在运用 exp软件商铺r $num1 > 0 判别是否大于0

#!/bin/bash
# author:一口Linux
whelement什么意思中文ile true
dlinux体系o
read -pwindows更新有必要吗 "pleas变量与函数e input a polinux体系安装sitive number: " num
# 判别数element什么意思中文是否是整数
expr $num + 1 &变量名的命名规矩> /linuxdev/nul软件技术专业l
if [ $? -eq 0 ];then
# 判别这个整数是否大于0,大于elementary school0回来1
if [ `expr $num > 0` -elementary是什么意思eq 1 ];then
#echo "yes,positive number"
# $suwindows更新m没有赋值,默许为0
for i in `seq 0 $num`
do
sum=`expr $sum + $i`
done
echo "1+2+3+...+$num = $sum"
# 实施核算需求退出
exit
fi
fi变量泵
echo "error,input enlegal"
co变量类型有哪些ntinue
done

测验:
Linux入门-shell编程入门-合适小白

七、联络运算符

有时分我们需求比较两个数字的大小联络,这时分就要用到联络运算符。联络运算变量符只支撑数值运算,不支撑字符运算。

1. 知识点详解

Shell 言语支撑下面这些联络运算符:

-eq:检windows更新测两个数是否持平,持平回来 tlinux必学的60个指令rue。
-ne:检测两个数是否不持平,持平回来 true。
-gt:检测左面的数是否大于右边的,假定是回来 true。
-lt:检测左面的数是否小于右边的,假定是回来 true。
-ge:检测左面的数是否大于等于右边的,假定是回来 true。
-le:检测左面的数是否小于等于右边的,假定elementui是回来 true

2. 操作详解

#!/bin/bash
# author:一口Linux
a=10
b=变量泵20
if [ $linux体系a -gt $b ]
then
echo "a great than b"
else
echo "a not great than b"
fi

实施作用!如下:

八、字符串运算符

1. 知识点详解

= 比较两个字符串是否持平
!= 比较两个字符串是否不持平
-z 检测字符串的长度是否为零
-n  检测字符串的长度是否不为零
$字符名 变量是否有element什么意思中文负值(为空),有回来Trwindows怎样激活ue,没有回来False

2. 操作详解

#!/bin/bash
# author:一口Linux
###本脚本变量与函数首要用于字符串运算符
if [ ! $1 ]
then
echo "榜首个参数为空"
echo "*********************windows体系*******************************************"
echo "****************************************************************"
echo "**************实施用例的格式为:sh $0 变量1 变量2***************"
echo "******elementary是什么意思*******************************************element滑板***************"
echo "*******************************Element************变量*****************elements****element什么意思中文"
break
else
if [ ! $2 ]
then
echo "第二个参数为空"
echo "****************************************************************"
echo "****************************************************************"
echo "**************实施用例的格式为:sh $0 变量1 变量2***************"
echo "******************变量******windows许可证行将过期怎样办***windows怎样激活*************************************"
echo "****************windows体系******软件技术******************************************"
break
else
###1、检测两个字符串是否持平;
if [ $1 = $2 ]
then
echo "这是榜首个判elementary school别句子"变量
echo "变量1等于变量2"
else
echo "这是榜首个判别语变量与函数教案句"
echo "变量1不等于变量2"
fi
###2、检测两个字符串是否不windows更新持平;
if [ $1 != $2 ]
then
echo "这是第二个判别句子"
echo "变量1不等于变量elements2"
else
e软件工程cho "这是第二个判别句子"变量的界说
echo "便量1等于变量2"
fi
###3、检测字符变量值串长度是否为0
if [ -z $1软件商铺下载 ]
then
echo "这是第三个判别段句子Linux"
echo "变量1字符串长度为0"
else
echo "这是第三个判别段句子"
echwindows体系olinux创建文件 $1
fi
###4、检测字符串长度是否不为0
if [ -n $2 ]
then
echo "这是第四个判别句子"
echo "变量2字符串长度不为0"
echo $2
else
echo "这是第四个判别句子"
echo "变量2字符串长度为0"
fi
###5、检测字符变量类型有哪些串是否Windows不为空
if [ $1 ]
then
echwindows7o "这是第五个判别句子"
ec变量值ho "变量1不为空"
else
echo "这是第五个判linux常用指令别句子"
echo "变量1为空"
fi
fi
fi

测验作用:
Linux入门-shell编程入门-合适小白

九、sh变量之间的联系ell文件及目录常用操作的几个实例

  1. 提取途径的目录和文件名

提取目录:

dirname $path

提取文件名:

basename $path
  1. 批量重命名带有空格文件
function processFilePathWithSpace(){
find $变量1 -name "* *" | while read line
do
newFile=`echo $elementary schoolline | sed 's/[ ][ ]*/_/g'`
mv "$变量是什么意思line" $newFile
logInfo "mv $line $newFile $?"
done
}
  1. linux重启指令历文件内容
cat /tmp/text.txt | while read line
do
echo $line
done
  1. 文件不存在,则创建文件
[ -f $logFile ] || touch $logFile
  1. 递归遍历目录
function getFi变量泵le(){
for file in `ls $1`
do
eelementary是什么意思lement=$1"/"$file
if [ -d $element ]
t软件商铺下载hen
getFile $element
else
echo $element
fi
done
}
  1. 清空文件内容
cat /dev/null > $filePath