目标
-
Linux高级命令
-
Shell编程
Linux高级命令
重定向命令
Linux 允许将命令执行结果重定向到一个文件,本应显示在终端上的内容保存到指定文件中。如:ls >test.txt ( test.txt 如果不存在,则创建,存在则覆盖其内容 )。
# 一个 >
覆盖写入文件
echo 1 > test.log
# 两个 >>
追加数据到文件
echo 1 >> test.config
cut 命令
文件内容查看命令,类似于cat more less tail查看文件的命令,区别于提取静态文本或文本流中的文本列。
参数 | 解释 |
---|---|
-b | 按字节选取 忽略多字节字符边界 |
-c | 仅显示行中指定范围的字符 |
-d | 自定义分隔符,默认为制表符 \t |
-f | 与-d一起使用,指定显示哪个区域。field |
-n | 与“-b”选项连用,不分割多字节字符; |
–complement | 补足被选择的字节、字符或字段; |
–out-delimiter=<字段分隔符> | 指定输出内容是的字段分割符; |
–help | 显示指令的帮助信息; |
–version | 显示指令的版本信息。 |
-
创建文本 stu.txt
id name age score 01 tom 18 78 02 jack 20 85 03 bill 16 90 04 mary 24 77 05 anna 21 85
# 分割获取第一列
cut -d " " -f 1 stu.txt
解释:
-d “ ” :用来指定文件字段之间的分隔符,如果文件的分隔符是制表符则不需要指定该参数
-f 数字 :用来指定哪一列
# 打印除了第二列以外的列
cut -d " " -f 2 --complement stu.txt
# cut命令可以将一串字符作为列来显示,字符字段的记法:
# N-:从第N个字节、字符、字段到结尾;
# N-M:从第N个字节、字符、字段到第M个(包括M在内)字节、字符、字段;
# -M:从第1个字节、字符、字段到第M个(包括M在内)字节、字符、字段。
# 打印第1个到第3个字符
cut -c 1-4 stu.txt
#打印前2个字符:
cut -c 1-2 stu.txt | cut -c -2 stu.txt
#打印从第5个字符开始到结尾
cut -c 5- stu.txt
wc命令
参数 | 解释 |
---|---|
-l | 统计行数 |
-c | 统计字节数 |
-w | 统计单词数 |
-m | 统计字符数 |
- 导入文件 test_wc.txt
111
222 bbb
333 aaa bbb
444 aaa bbb ccc
555 aaa bbb ccc ddd
666 aaa bbb ccc ddd eee
# 统计文件的行数、字节数、字数
wc test_wc.txt
# 第一个 6 是行数,21 代表单词,85代表字节数
#查看根目录下有多少单词
ll -h / | wc -w
注: 英文或者数字,一个字符就是一个字节,一个字节是8位,中文字符可能是2个字节,也可能是3个字节。
awk 命令
awk的介绍
awk是处理文本及文本分析的工具,保证文本是有格式的,默认每行按照空格或者 /tab 分割。
读取输入文件、为数据排序、去重、数据分析和生成报表的数据等。
语法格式:
变量分配:
默认情况下,awk 会将如下变量分配给它在文本行中发现的数据字段:
$0 代表整个文本行;
$1 代表文本行中的第 1 个数据字段;
$2 代表文本行中的第 2 个数据字段;
$n 代表文本行中的第 n 个数据字段。
print和printf 打印
print 输出 就是变量、数值和字符串
printf 类似 c语言的格式化输出
awk 的案例操作
- 写入文本文件 test_awk.txt
aa 111 333
bbb 444 555
ccc 666 777 888
ddd 999 222 999
#显示文件中第1段
awk '{print $1}' test_awk.txt
awk -F ' ' '{print $1}' test_awk.txt
#显示文件中第1,2,3段
awk '{print $1,$2,$3}' test_awk.txt
#将输出的内容用#号连接,输出前三列
awk '{print $1"#"$2"#"$3}' test_awk.txt
#用段之间的连接符 OFS 进行字段的连接输出
awk '{OFS="#"} {print $1,$2,$3}' test_awk.txt
- 指定分隔符 文本文件中有可能
比如 1 \001张三 \001 25 \001 男 \001画画 读书 旅游 爬山
- -F 来指定分隔符
#打印出test_awk2.txt的所有段
awk -F ':' '{print $0}' test_awk2.txt
#打印出test_awk2.txt的第1,3段
awk -F ':' '{print $1,$3}' test_awk2.txt
内容的模式匹配——正则表达式
- awk中正则表达式的规则:
1、^linux 以linux开头的行
3、. 匹配任意单字符
4、.+ 匹配任意多个字符 (1个到多个)
5、 .* 匹配0个或多个字符(可有可无)
6、 [0-9a-z] 匹配中括号内任意一个字符
7、 (linux)+ 出现多次Linux单词
8、 (web){2} web出现两次以上
9、\ 屏蔽转义
# 匹配test_awk2.txt中包含cc的内容
awk '/cc/' test_awk2.txt
# 匹配test_awk2.txt中第1段包含cc的内容 ~ 代表match 匹配 /cc/ 可以认为时 pattern
# print 一般要加上指定的列,但是如果匹配上的文本行都显示出来的时候,就不需要指定 print
awk -F ':' '$1 ~ /cc/' test_awk2.txt
# 匹配test_awk2.txt中第1段包含至少连续两个c的内容
awk -F ':' '$1 ~ /cc+/' test_awk2.txt
awk -F ':' '$1 ~ /(cc)+/' test_awk2.txt
awk -F ':' '$1 ~ /(c){2}/' test_awk2.txt
#在test_awk2.txt中如果匹配到abc就打印第1,3段,如果匹配到ccc,就打印第1,3,4段
awk -F ':' '/abc/ {print $1,$3} /ccc/ {print $1,$3,$4}' test_awk2.txt
#在test_awk2.txt中如果匹配到aaa或者ddd,就打印全部内容
awk '/aaa|ddd/' test_awk2.txt
段内容判断
根据awk命令,将分段进行内容的匹配和判断,判断的规则:
运算符 | 解释 |
---|---|
= += -= *= /= %= ^= **= | 赋值 |
?: | C条件表达式 |
|| | 逻辑或 |
&& | 逻辑与 |
~ 和 !~ | 匹配正则表达式和不匹配正则表达式 |
< <= > >= != == | 关系运算符 |
空格 | 连接 |
+ - | 加,减 |
* / % | 乘,除与求余 |
+ - ! | 一元加,减和逻辑非 |
^ *** | 求幂 |
++ – | 增加或减少,作为前缀或后缀 |
$ | 字段引用 |
in | 数组成员 |
# 在test_awk2.txt中如果第3段等于222就打印所有内容
awk -F ':' '$3==222' test_awk2.txt
# 在test_awk2.txt中如果第3段等于333就打印第一段
awk -F ':' '$3==333 {print $1}' test_awk2.txt
# 在test_awk2.txt中如果第3段等于300就打印第一段
awk -F ':' '$3==300 {print $1}' test_awk2.txt
# 在test_awk2.txt中如果第1段等于ccc,并且第2段等于666就打印全部
awk -F ':' '$1=="ccc" && $2==666 {print $0}' test_awk2.txt
段之间的比较
# 在test_awk2.txt中如果第3段小于第4段就打印全部
awk -F ':' '$3<$4' test_awk2.txt
# 在test_awk2.txt中如果第2段等于第4段就打印全部
awk -F ':' '$2=$4' test_awk2.txt
NR行号和NF段数
NF | 一条记录的字段的数目(多个字段) |
---|---|
NR | 已经读出的记录数,就是行号,从1开始(加个行号) |
#打印test_awk2.txt全部内容显示行号 (加一列做为序号)
awk -F ':' '{print NR":"$0}' test_awk2.txt
#打印test_awk2.txt全部内容显示段数(加一列作为字段数)
awk -F ':' '{print NF":"$0}' test_awk2.txt
#打印test_awk2.txt前2行,并显示行号
# nl命令在linux系统中用来计算文件中行号 NL linux命令
nl test_awk2.txt | head -2 | nl test_awk2.txt | tail -2
awk -F ':' 'NR<3 {print NR " " $0}' test_awk2.txt
综合案例
#对统计awk目录下所有文本文件的大小
ll -h |awk -F ' ' '{total=total+$5} {print(total)}'
ll | awk 'BEGIN{}{total=total+$5} END{print(total)}'
#打印99乘法表
awk 'BEGIN{ for(i=1;i<=9;i++){ for(j=1;j<=i;j++){ printf("%dx%d=%d%s", i, j, i*j, "\t" ) } printf("\n") } }'
Shell编程
shell介绍
-
shell脚本执行方式Shell 是一个用 C 语言编写的程序,通过 Shell 用户可以访问操作系统内核服务。它类似于 DOS 下的 command 和后来的 cmd.exe。Shell 既是一种命令语言,又是一种程序设计语言。
-
Bash 也是大多数Linux 系统默认的 Shell
#!/bin/bash
echo 'hello world'
#! 标记当前这个脚本是shell脚本,解释器要知道 sh bash awk等
shell解释器
查看有哪些解释器:
cat /etc/shells
- 在现代的 Linux上,sh 已经被 bash 代替,/bin/sh往往是指向/bin/bash的符号链接
- 查看当前系统的 shell 脚本解释器 echo $SHELL
shell执行的方式
@L_502_20@shell数据类型
- 字符串类型
字符串可以使用单引号,双引号,也可以不用引号
- 整数类型
需要进行数学计算的时候,需要用到整数类型 , $((运算式)) $[运算式] ,如果不进行数学运算就用 字符串就行。
shell变量
shell变量是弱类型的变量,有3中变量:用户变量,环境变量,特殊变量
-
变量的定义格式:
变量名 = 变量值
a=123
说明:如果是单引号,里面的内容作为一个字符串,如果是双引号,那么里面的变量会被取出值。
变量的定义需遵循的规则
-
变量名可以由字母、数字和下画线组成,但是不能以数字开头。
-
在 Bash中,变量的默认类型都是字符串型,如果要进行数值运算,则必须使用特殊命令。
-
变量用等号"=“连接值,”="左右两侧不能有空格。
-
变量值中如果有空格,则需要使用单引号或双引号包含,如 test=“Hello World!”。双引号括起 来的内容"$"和反引号者都拥有特殊含义,而单引号括起来的内容都是普通字符。
-
在变量值中,可以使用转义符"\"。
-
不能使用bash里的关键字(可用help命令查看保留关键字)。
用户变量
注意:单引号里的内容原封不动的输出,双引号里有变量的调用则会调用变量

- 定义变量 a=1
- 访问变量 echo $a
- 字符串的叠加操作

测试的脚本
#! /bin/bash
string="I am shell"
num=5
echo "a=${num},string=${string}"
- 变量的赋值操作(重要)
- read 关键字读取键盘上的值
- 通过KaTeX parse error: Can't use function '\`' in math mode at position 1: \̲`̲shell命令\`或(shell命令) 执行shell命令,并且将执行的结果赋值给变量。
#!/bin/bash
echo 'who are U?'
read name
pwd_path=$(pwd)
date_str=`date`
echo "i am $name"
echo "current date is $date_str"
echo "current path $pwd_path"
- 只读变量
#!/bin/bash
myUrl="http://www.google.com"
readonly myUrl
myUrl="http://www.runoob.com"
# 此时不能更改只读变量,否则会报错
- 删除变量的值
#置空当前变量的值
#!/bin/sh
myUrl="http://www.runoob.com"
unset myUrl
echo $myUrl
环境变量
- 当shell程序启动时,都自动设置一组变量,这组变量就是环境变量。shell中的所有命令都可以使用这些变量,环境变量可以在/etc/profile中设置,环境变量的名字习惯上使用大写字母。
- 查看当前的环境变量 env
- 常见的环境变量
常见的环境变量:
PATH 决定了shell将到哪些目录中寻找命令或程序
HOME 当前用户主目录
HISTSIZE 历史记录数
LOGNAME 当前用户的登录名
HOSTNAME 指主机的名称
SHELL 当前用户Shell类型
LANGUGE 语言相关的环境变量,多语言可以修改此环境变量
MAIL 当前用户的邮件存放目录
PS1 基本提示符,对于root用户是#,对于普通用户是$
-
自定义环境变量
#进入环境变量设置文件
vim /etc/profile
#export 变量Key=变量Value
export JAVA_HOME=/export/server/jdk_1.8.20
# 保存退出
wq
#立即生效
source /etc/profile
特殊变量
我们可以在执行 Shell 脚本时,向脚本传递参数,这时候可以使用特殊变量来获取参数,Shell常用的特殊变量如下:
变量 | 解释 |
---|---|
$# | 命令行参数的个数 |
$n | $1表示第一个参数,$2表示第二个参数,以此类推 |
$0 | 当前程序的名称 |
$? | 前一个命令或许或函数的返回码 |
$* | 以“参数1 参数2 。。。”形式保存所有参数 |
$@ | 以“参数1”“参数2”。。。形式保存所有参数 |
$$ | 本程序的(进程ID号)PID |
$! | 上一个命令的PID |
#!/bin/bash
echo "Shell 传递参数实例!";
echo "执行的文件名:$0";
echo "第一个参数为:$1";
echo "第二个参数为:$2";
echo "第三个参数为:$3";
echo "参数个数为:$#";
echo "传递的参数作为一个字符串显示*:$*";
echo "传递的参数作为一个字符串显示*:$@";
$* 与 $@ 区别:
相同点:都是引用所有参数。
不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 " * " 等价于 “1 2 3”(传递了一个参数),而 “@” 等价于 “1” “2” “3”(传递了三个参数)
shell字符串
- 单引号:
单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的,单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。
- 双引号:
可以使用变量也可以使用转义字符
- 字符串的长度
#!/bin/bash
name="alibaba"
echo ${name}
echo ${#name}
- 提取子字符串
#!/bin/bash
string="敢于亮剑决不后退"
echo ${string:2:2} # 输出结果为: 亮剑
- 查找字符串的位置
#!/bin/bash
string="i am a boy"
echo `expr index "$string" am` # 输出是: 3
注: 以上脚本中 ` 是反引号(Esc下面的),而不是单引号 ',不要看错了哦。
shell算术运算符
简介
Shell 和其他编程一样,支持包括:算术、关系、布尔、字符串等运算符。原生 bash 不支持简单的数学运算,但是可以通过其他命令来实现,例如expr。expr 是一款表达式计算工具,使用它能完成表达式的求值操作。
- 两个数相加减
## 运算符和数字之间必须有空格,* / 要有转义
## 反引号中间括起来是完整的表达式
#!/bin/bash
val=`expr 2 \* 2 + 2 - 1`
echo $val
运算符 | 说明 | 举例 |
---|---|---|
+ | 加法 | expr $a + $b 结果为 30。 |
- | 减法 | expr $a - $b 结果为 -10。 |
* | 乘法 | expr $a \* $b 结果为 200。 |
/ | 除法 | expr $b / $a 结果为 2。 |
% | 取余 | expr $b % $a 结果为 0。 |
= | 赋值 | a=$b 将把变量 b 的值赋给 a。 |
== | 相等。用于比较两个数字,相同则返回 true。 | [ a == b ] 返回 false。 |
!= | 不相等。用于比较两个数字,不相同则返回 true。 | [ a != b ] 返回 true。 |
#!/bin/bash
a=4
b=20
#加法运算
echo expr $a + $b
#减法运算
echo expr $a - $b
#乘法运算,注意*号前面需要反斜杠
echo expr $a \* $b
#除法运算 echo $a / $b
#此外,还可以通过$(())、$[]进行算术运算。
echo "a = $a"
c=$((a+b))
d=$[a+b]
echo "c = $c"
echo "d = $d"
shell流程控制
语句控制
equal ,not equal, greater than, less than, greater equal, less equal
- 数字的判断
运算符 | 说明 |
---|---|
-eq | 检测两个数是否相等,相等返回 true。 |
-ne | 检测两个数是否不相等,不相等返回 true。 |
-gt | 检测左边的数是否大于右边的,如果是,则返回 true。 |
-lt | 检测左边的数是否小于右边的,如果是,则返回 true。 |
-ge | 检测左边的数是否大于等于右边的,如果是,则返回 true。 |
-le | 检测左边的数是否小于等于右边的,如果是,则返回 true。 |
- 字符串的判断
判断符 | 说明 |
---|---|
-n STRING | 字符串长度不为零 |
-z STRING | 字符串长度为0 |
= | 判断两个字符串是否一样 |
!= | 判断两个字符串是否不一样 |
- 文件的判断
判断 | 说明 |
---|---|
-f | 存在且是普通文件 file |
-d | 存在且是目录 diretory |
-h | 存在且是符号链接 hop |
-e | 文件存在 exists |
–r | 文件存在并且可读 read |
–w | 文件存在并且可写 writable |
–x | 文件存在并且可执行 executable |
if 语句
if
if condition
then
command1
command2
...
commandN
fi
案例:
# 判断当前系统是否有多个ssh进程,如果有则打印true
#!/bin/bash
if [ `ps -ef|grep "ssh" |wc -l` -gt 1 ]
then echo "true"
fi
# 判断/tmp/cdrom目录是否存在,若不存在就去创建这个目录
#!/bin/bash
directory="/tmp/cdrom"
if [ ! -e $directory ]
then mkdir -p $directory
fi
if else
if condition
then
command1
command2
...
commandN
else
command
fi
#根据年龄来判断当前是否是成年人
#!/bin/bash
read -p "Enter your age(1-100):" age
if [ $age -ge 18 ]
then
echo '已经成年!'
else
echo '未成年!'
fi
- if else语句经常与test命令结合使用
test 命令允许你做各种测试并在测试成功或失败时返回它的退出状态码(为0表示为真,为1表示为假)。使用这个状态码,可以让 Bash 对测试的结果做出反应。
test 命令的语法为:
test EXPRESSION
或
[ EXPRESSION ]
# 判断两个数字是否相等,使用test表达式
#如果test满足条件返回状态码为0 否则返回状态码为1
#!/bin/bash
num1=$[2*3]
num2=$[1+5]
if test $[num1] -eq $[num2]
then
echo '两个数字相等!'
else
echo '两个数字不相等!'
fi
- if else-if else
if condition1
then
command1
elif condition2
then
command2
else
commandN
fi
## 判断两个值是否相等
#!/bin/bash
echo "请输入a的值:"
read a
echo "请输入b的值:"
read b
if [ $a == $b ]
then
echo "a 等于 b"
elif [ $a -gt $b ]
then
echo "a 大于 b"
elif [ $a -lt $b ]
then
echo "a 小于 b"
else
echo "没有符合的条件"
fi
## 判断成绩 优秀 良好 中等 及格 不及格
#!/bin/bash
read -p "Enter your score(0-100):" n #-p参数表示给出提示信息
if [ $n -ge 85 ] && [ $n -le 100 ] ; then
echo "优"
elif [ $n -ge 70 ] && [ $n -le 84 ] ; then
echo "良"
elif [ $n -ge 60 ] && [ $n -le 69 ] ; then
echo "中"
else
echo "差"
fi
shell 的for循环语句
for 变量 in 值1 值2 值3…
do
程序
done
## 遍历根目录下的所有文件的名称
#!/bin/bash
for file in `ls /`
do echo $file
done
for 数字循环格式
for ((初始值;循环控制条件;变量变化))
do
程序
done
案例:
## 累加1-100 的累加和
#!/bin/bash
s=0
#从1加到100
for(( i=1;i<=100;i=i+1))
#定义循环100次
do
#每次循环给变量s赋值
s=$(($s+$i))
done
#输出从1加到100的和
echo "The sum of 1+2+..+100 is : $s"
需要注意以下几点:
初始值:在循环开始时,需要给某个变量赋予初始值,如 i=1。
循环控制条件:用于指定变量循环的次数,如 i<=100,则只要 i 的值小于等于 100,循环就会继续。
**变量变化:**每次循环之后,变量该如何变化,如 i=i+1,代表每次循环之后,变量的值都加 1。
语法二和其他语言中的 for 循环类似,也就是事先决定循环次数的固定循环。
shell的while循环语句
- 语法格式
while 条件
do
程序
done
# 满足小于5的数字打印出来
#!/bin/bash
num=1
while(( $num<=5 ))
do
echo $num
let "num++"
done
使用中使用了 Bash let 命令,它用于执行一个或多个表达式,变量计算中不需要加上 $ 来表示变量,具体可查阅:Bash let 命令。
shell的case语句
Shell case语句为多选择语句。可以用case语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。case语句格式如下:
case 值 in
模式1)
command1
command2
...
commandN
;;
模式2)
command1
command2
...
commandN
;;
esac
case工作方式如上所示。取值后面必须为单词in,每一模式必须以右括号结束。取值可以为变量或常数。匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;。
取值将检测匹配的每一个模式。一旦模式匹配,则执行完匹配模式相应命令后不再继续其他模式。如果无一匹配模式,使用星号 * 捕获该值,再执行后面的命令。
#case 值 必须要有 in
#值必须要用 )
# ;; 类似于 java break;
#结束 esac作为结束
echo '输入 1 到 4 之间的数字:'
echo '你输入的数字为:'
read aNum
case $aNum in
1) echo '你选择了 1'
;;
2) echo '你选择了 2'
;;
3) echo '你选择了 3'
;;
4) echo '你选择了 4'
;;
*) echo '你没有输入 1 到 4 之间的数字'
;;
esac
跳出循环
- break
read aNum
case $aNum in
1|2|3|4|5) echo "你输入的数字为 $aNum!"
;;
*) echo "你输入的数字不是 1 到 5 之间的! 游戏结束"
break
;;
esac
done
- continue
#!/bin/bash
while :
do
echo -n "输入 1 到 5 之间的数字: "
read aNum
case $aNum in
1|2|3|4|5) echo "你输入的数字为 $aNum!"
;;
*) echo "你输入的数字不是 1 到 5 之间的!"
continue
echo "游戏结束"
;;
esac
done
函数
- 语法格式
[ function ] funname()
{
action;
[return int;]
}
案例
# 带返回的函数
#!/bin/bash
funWithReturn(){
echo "这个函数会对输入的两个数字进行相加运算..."
echo "输入第一个数字: "
read aNum
echo "输入第二个数字: "
read anotherNum
echo "两个数字分别为 $aNum 和 $anotherNum !"
return $(($aNum+$anotherNum))
}
funWithReturn
echo "输入的两个数字之和为 $? !"
需要注意: 虽然此处根据 $? 返回了函数的函数值, 但本质其实不是, $? 是用于返回上一个命令的执行完的一个状态, 而这个状态值为(0~255)的范围, 当执行成功, 状态码为0 , 返回其他任意值都表示有异常, 故正确的函数的返回值, 应该如下的操作:
#!/bin/bash
echo "---------第一种方式: ---------------"
result=""
sum() {
#1 让用户输入两个数字
read -p "请输入第一个数字: " num1
read -p "请输入第二个数字:" num2
result=$[$num1+$num2]
}
sum
echo "返回值为: ${result}"
echo "---------第二种方式------------"
sum1() {
#1 让用户输入两个数字
read -p "请输入第一个数字: " num1
read -p "请输入第二个数字:" num2
result=$[$num1+$num2]
echo "${result}"
}
result1=$(sum1)
echo "返回值: ${result1}"
注意,(centos6.x版本)不能获取第十个参数,获取第十个参数需要{10}。当n>=10时,需要使用${n}来获取参数。
数组
定义数组
数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小(与 PHP 类似)。
与大部分编程语言类似,数组元素的下标由0开始。
Shell 数组用括号来表示,元素用"空格"符号分割开,语法格式如下:
array_name=(value1 … value)
- 赋值和输出
#!/bin/bash
my_array=(A B "C" D)
#我们也可以使用下标来定义数组:
array_name[0]=value0
array_name[1]=value1
array_name[2]=value2
echo "第2个元素:${my_array[1]}"
- 获取数组中的所有元素
#!/bin/bash
my_array[0]=“A”
my_array[1]=“B”
my_array[2]=“C”
my_array[3]=“D”
echo "数组的元素为: ${my_array[*]}"
echo "数组的元素为: ${my_array[@]}"
- 获取数组的长度
获取数组长度的方法与获取字符串长度的方法相同。 需要用到 #
#!/bin/bash
my_array[0]=A
my_array[1]=B
my_array[2]=C
my_array[3]=D
echo "数组元素个数为: ${#my_array[*]}"
echo "数组元素个数为: ${#my_array[@]}"
- 遍历数组
#!/bin/bash
my_arr=(AA BB CC)
for var in ${my_arr[*]}
do
echo $var
done
shell综合案例
# 游戏规则为:程序内置一个1到100 之间的数字作为猜测的结果,由用户猜测此数字。用户每猜测一次,由系统提示猜
# 测结果:大了、小了或者猜对了;直到用户猜对结果,则提示游戏结束。
#!/bin/bash
#随机生成一个数字
#5000%100=0
#除数为3,可能的余数是几? 0 ,1 ,2
num=$[RANDOM%100 + 1]
#循环读取一个数字来判断是否等于随机生成数字,并判断
while :
do
read -p "输入1-100 随机数据:" a
if [ $a -eq $num ]
then echo "ok,猜的很对"
exit
elif [ $a -gt $num ]
then echo "你猜大了"
else echo "你猜小了"
fi
done
完毕。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。