shell脚本编写-基础练习_使用shell语言编写一个脚本实现比较从键盘输入的变量x和y是否相等,如果相等输出ye_2.wa的博客-程序员宅基地

技术标签: 脚本  Linux  shell  

#! /bin/sh
echo "please input x y";
read x y;   #连续输入一组参数 以空格隔开
z=`expr $x+$y`;
echo "The sum is $z"

$? 是上一条命令的终止状态, 相当于C语言的main函数的返回值。

字符串比较  =、!=、-n、-z判断相等,不等,长度大于零,长度等于0


#! /bin/Bash
echo "please x y .if 0 is = then !="
read i y
[ "$i" = "$y" ]
echo $? #保存前一个命令的返回码

#! /bin/Bash
read i
[ -n "$i" ]
echo $? #保存前一个命令的返回码

数字比较 test语句来比较
-eq 相等 | -ge大于等于 | -le 小于等于| -ne 不等于 | -gt 大于 | -lt 小于


#! /bin/Bash

read x y
if test $x -eq $y
  then
	echo "$x=$y"
else
	echo "$x!=$y"
fi


逻辑操作  

!反:与一个逻辑值相反的逻辑值

-a 与(and) :两个逻辑值为“是”返回为“是”,反之为否

-o 或(or):两个逻辑值有一个为“是”则为是

#! /bin/Bash

str1="hehe"
str2=""
str3="hehe"
echo "is equals"

[ "$str1" -a "$str2" ]
echo $?

[ "$str1" -a "$str3" ]
echo $?

[ "$str1" -o "$str3" ]
echo $?

[ "$str1" -o "$str2" ]
echo $?

文件操作

-d 判断对象存在且为目录

-f 判断对象存在且为文件

-L 对象存在且为符合连接

-r 对象存在且可读

-s 对象存在且长度非零

-w 对象存在且可写

-x 对象存在且可执行

判断 /lw 为文件则 ls,为文件则读取内容

if [ -d /lw ]; then ls; elif [ -f /lw ]; then cat /lw; else echo "error"; fi

for 操作 ,in的列表中 空格表示换行

for i in a,b,c I,2 3,5; do echo $i; done


#for语句中的双括号不能省,最后的分号可有可无,表达式temp=`expr $temp + $j`的加号两边的空格不能省,否则会成为字符串的连接。

#! /bin/Bash

temp=0

for((i=0;i<100;i++))
   do
	temp=`expr $temp + $i`
   done
   echo "The result is $temp"

while 循环

#! /bin/Bash

temp=0
num=0

while(($num<=100))
do
   temp=` expr $temp + $num `
   num=` expr $num + 1` 
 done
   echo "The result is $temp"

until 循环

重复do和done之间的操作直到表达式成立为止。

#! /bin/Bash

temp=0
num=0

until [ $num -gt 100 ]
do
	temp=` expr $temp + $num `
	num=` expr $num + 1`
done

echo " The result is $temp"


for+if 结合语法。

if 语法格式为:

if      比较式

then 操作

elif   比较式

then 操作

......

else 操作

fi      结束符

#! /bin/Bash

for((i=0;i<10;i++))
 do
   if(($i==1))
	then 
	  echo "This is 1"
	elif(($i==2))
	 then
	  echo "This is 2"
	elif(($i==3))
	 then
	  echo "This is 3"
	elif test $i -eq 4
	 then
	  echo "This is 4"
	else
	  echo "This is  othen : $i"
    fi
 done


case 表达式 in

值1|值2)

操作;;

值3|值4)

操作;;

值5|值6)

操作;;

*)

操作;;

esac




Shell的函数



函数名( )

 {

函数体

  }

函数调用方式为

函数名  参数列表


函数定义完成后必须同时写出函数的调用

#! /bin/Bash

add()
{
a=$1
b=$2
z=` expr $a + $b `
echo "The sum is :$z"
}

add $1 $2

执行

[root@localhost  bin]#./ test18  10  20

The sum is 30


在刚刚学习写shell 批处理时候,进行逻辑运算中,少不了需要进行基础的:四则运算,这里说说在linux shell 里面简单的实现方法。
1.简单方法
$ b=$((5*5+5-3/2)) 
$ echo $b
29
 
在linux shell中,我们可以使用 $(()) 将表达式放在括号中,即可达到运算的功能。
2.其它方法:
用:expr 实现运算
$ expr 5 - 4
1
 

注意:将需要运算的表达式写入在expr 后面即可,保证 参数与运算符号中间有空格隔开。


数组变量操作

方法一: 一次赋一个值

数组名[下标]=变量值

# array[0]=pear

# array[1]=apple

# array[2]=orange

# array[3]=peach

 

方法二: 一次赋多个值

# array=(tom jack alice)

# array=(`cat /etc/passwd`) 希望是将该文件中的每一个行作为一个元数赋值给数组array3

# array=(`ls /var/ftp/shell/for*`)

# array=(tom jack alice "bash shell")

 

# declare -a

declare -a array='([0]="pear" [1]="apple" [2]="orange" [3]="peach")'

declare -a array='([0]="tom" [1]="jack" [2]="alice")'

 

访问数组元数:

# echo ${array[0]} 访问数组中的第一个元数

# echo ${array[@]} 访问数组中所有元数  等同于 echo ${array1[*]}

# echo ${#array[@]} 统计数组元数的个数

# echo ${array[@]:1} 从数组下标1开始

# echo ${array[@]:1:2} 从数组下标1开始,访问两个元素


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u011278496/article/details/19832819

智能推荐

SpeedTree 003_Karon_NeverAlone的博客-程序员宅基地

1.树的粗细2.树的继承关系3.重力4.独立显示某一部分独立显示——选中并按下F显示全部——选中独立显示的部分并按下 CTRL+F5.树枝的生长角度6.成比例大小调整7.从bridge下载材质并赋值给模型在bridge上选择需要的材质先下载,之后再export到文件夹里面大概就是这个样子的,但是不同的材质可能包含的内容不一样speedtree中的材质栏中先新建一个材质,然后将材质包中的图片对应...

获取IP地址IPUtil_iputil.getipaddress().gethostaddress()_爱喝冰阔乐的博客-程序员宅基地

package com.demo.test;import java.net.InetAddress;import java.net.UnknownHostException;public class IPUtil { private IPUtil(){ } public static String getServerIP() { try { return InetA..._iputil.getipaddress().gethostaddress()

android之从Bmob获取数据显示在ListView中_bmob怎么读取数据库信息并显示为文本_时间胶嚢的博客-程序员宅基地

一、熟悉Bmob1、Bmob官方地址2、查看Bmob关于android快速入门文档:链接二、了解ListView1、构建泛类2、构建适配器3、构建适配器的layout4、在活动中启动ListView三、源码泛类Personpublic class Person extends BmobObject { private String name; private String address; public String getName() { _bmob怎么读取数据库信息并显示为文本

python中查看变量类型的函数是_查看变量类型的Python内置函数是type____-程序员宅基地

【简答题】说出下列指令的寻址方式,并用语言阐述该指令的意思。(建议分值 50% ) ( 1 ) ADD R0,R1,#256 ( 2 ) SUB R0,R2,R3,LSL #1 ( 3 ) STRB R0,[R1] ( 4 ) STR R0,[R1],#8 ( 5 ) LDR R0,[R1],R2 ( 6 ) LDR R0,[R1,#..._要查看一个变量的数据类型可使用函数

Android - 资源xml文件适配不同的版本_SpikeKing的博客-程序员宅基地

资源xml文件适配不同的版本本文地址:http://blog.csdn.net/caroline_wendyAdapt layout to Android platform or API level:把布局文件适配不同的API级别,避免警告;通过为不同的API等级,建立不同的文件夹(layout-v4),进行适配,可以去掉Warning.具体:If what you're trying to do

Spark 编程实战之经典算法TOP K_weixin_34192732的博客-程序员宅基地

TopKTopK算法有两步,一是统计词频,二是找出词频最高的前K个词。1.实例描述假设取Top1,则有如下输入和输出。输入:HelloWorldByeWorldHelloHadoopByeHadoopByeHadoopHelloHadoop输出:词Hadoop词频42.设计思路首先统计WordCount的词频,将数据转化为(词,..._spark处理topk

随便推点

详解android应用程序的反编译_android应用程序反编译_xinyetonghua的博客-程序员宅基地

毕业设计不小心选了智能手机开发方向,而平台选择了android,所以最近自学了不少android程序开发的知识。但是作为一个懒散不堪,容易半途而废的人,android所自带的体系还是有点庞大,想要以此开发一个属于自己的独一无二的应用,难度对我这个小菜鸟来说实在大。所以难免生起“他_android应用程序反编译

Sql Server三范式的理解_贞心真义的博客-程序员宅基地

关系模型原理的核心是“规范化”,规范化是把数据库组织成在保持存储数据完整性的同时最小化冗余数据的结构过程。规范化的数据库是符合关系模型规则的数据库,通常把这些规则称为范式。 范式是符合某一种级别的关系模式的集合,关系数据库中的关系必须满足一定的要求即满足不同的范式。下面主要讲的的是三范式。 第一范式 第一范式是指数据表的每一列都是不可分割的基本数据项

如何修改pdf文件的标题及内容_pdf属性标题不能改_pdf文件怎么编辑文字的博客-程序员宅基地

很多刚刚接触PDF文件的朋友,对于修改pdf文件的这个问题总是不知道该如何操作,其实大家应该知道,想要修改PDF文件如果没有专业的辅助软件是不可能成功的,所以说小编现在为大家介绍现在常用的pdf修改方法。第一步就是在网上下载好迅捷pdf编辑工具;下载好工具之后打开就可以使用了;先用工具打开pdf文件,打开后开始对文件进行编辑;首先单击功能栏中的“编辑内容”按钮,使文档进入编辑状_pdf属性标题不能改

suse linux下vsftp配置和操作_junmail的博客-程序员宅基地

======================vsftpd================几个命令(也可以将service vsftpd 改成rcvsftpd)service vsftpd status service vsftpd startservice vsftpd stopservice vsftpd restart修改配置文件:vi /etc/ftpusers 注释需要登陆ftp...

解决photoshop cc在4K分辨率下字体过小。_4k分辨率字太小怎么办_Simonchen666的博客-程序员宅基地

解决photoshop cc在4K分辨率下字体过小。新买了4K笔记本后,原先的Photoshop cc在新电脑上字体特别小,极大的不方便使用,在百度上搜索解决方案,大多是在编辑-首选项-界面-UI大小(字体大小)。但我的版本没有UI大小的选项,字体也最大只有中号。后来看贴吧里有个老哥的解决方案,记录一下。右键打开PS的属性 在兼容性里面勾选替代高DPI缩放行为 选择系统或者系统(增强)。完美解..._4k分辨率字太小怎么办

useHttp_Jedi Hongbin的博客-程序员宅基地

import { useEffect, useState } from "react";import http, { HttpMethod, HttpResponse, HttpError, HttpRequestConfig,} from "../server/httpService";interface IProps { url: string; method?: HttpMethod; options?: HttpRequestConfig;}interfac_usehttp

推荐文章

热门文章

相关标签