首页 > 系统相关 >15.shell编程

15.shell编程

时间:2022-09-01 10:58:42浏览次数:49  
标签:bin shell 15 num1 num2 编程 echo bash name

Linux的shell编程可以理解为Windows里面的powershell和cmd

新建文件与执行

在root文件夹新建shell文件后写入命令

cd /root
vi test.sh   # shell文件后缀为.sh

添加执行权限后运行该文件

chmod +x test.sh
# 三种方法都可以运行
bash test.sh
./test.sh
/root/test.sh

shell文件标准开头:#!/bin/bash

运行输出ifconfig结果后输出haha

#!/bin/bash
ifconfig
echo 'haha'

此时haha不会输出

#!/bin/bash
ifconfig
exit 1 
echo 'haha'

如果结束时候写exit 1,那么这个.sh文件执行完之后,echo $? 就会输出1,数字最高到255,其他的都输出0

使用/修改变量

#!/bin/bash
$your_name="xiaoming"
echo $your_name

$your_name="xiaohong"
echo ${your_name}   # 都可以输出变量

Linux中变量赋值操作会把空格当作命令执行

设置只读变量

$your_name="xiaoming"
readonly your_name  
$your_name="xiaohong"

执行会报错,原变量未被修改

删除变量

$your_name="xiaoming"
unset your_name
echo $your_name

不存在变量输出为空

参数

$1 $2 $3   # 对应调用第1、2、3个参数
$0         # 命令本身
$*         # 传递给脚本的所有参数(把所有参数当作整体)
$@         # 传递给脚本的所有参数
$#         # 传递给脚本参数的个数

image

$*和$@虽然结果一样,但是前者是一个整体,整个是一个字符串

条件和运算符

#!/bin/bash

num1=100
num2=200

if test $[num1] -eq $[num2]
then
 echo 'dengyu'
else
 echo 'budengyu'
fi

数值测试:
-gt >
-ge >=
-eq =
-ne !=
-lt <
-le <=

参数交互

运行后输入参数

#!/bin/bash

read -p 'shu ru num1&num2:' num1 num2
if [ $num1 -gt $num2 ];then   
 echo 'num1>num2'
elif [ $num1 -lt $num2 ];then
 echo 'num1<num2'
else
 echo 'num1=num2'
fi

image

运行前带入参数

#!/bin/bash

if [ $1 -gt $2 ];then
 echo 'dayu'
elif [ $1 -lt $2 ];then
 echo 'xiaoyu'
else
 echo 'dengyu'
fi

image

用户传入的参数在[]前后要有空格

用户创建

#!/bin/bash

if [ $# -lt 1 ];then   # 必须带参数
 echo '必须一个以上参数'
 exit 1  # $?=1
fi
if id $1 &>/dev/null;then  # &>将输出重定向到回收站
 echo '$1 exist'
 exit 0
else
 useradd $1
 [ $? -eq 0 ] && echo "$1" | passwd --stdin $1 &>/dev/null  # 如果用户输入正确,将用户的键盘输入(用户名)当作密码保存并不输出
fi

命令:./test.sh xiaoming ,如果xiaoming不存在,就会创建一个用户名和密码都是xiaoming的账户

命令执行正确$?=0,执行失败$?=1

函数

直接调用

#!/bin/bash

function fun1(){
 echo 'haha'
}

fun1  # 调用函数

有返回值(计算后直接输出)

#!/bin/bash

function fun1(){
 echo 'input num1:'
 read num1
 echo 'input num2:'
 read num2
 res=$[$num1+$num2]  
 echo $res
}

fun1

有返回值(计算后通过其他函数输出)

#!/bin/bash

function sum(){
 b=0
 b=$[$1+$2]
 return $b
}

read -p "Please input num1:" num1;
read -p "Please input num2:" num2;

function sum1(){
 sum $num1 $num2
 a=$?
 echo $a
}

sum1

return只能返回0-255之间的整数,超过255重新计数;return出来的只能使用$?才能看到,输出最好还是用echo

通过循环进行正常return

#!/bin/bash

sum=0   # 全局变量

function getsum(){
 for ((i=$1; i<=$2; i++)); do
  ((sum+=i))   # 从$1累加到$2
 done
 return $?
}

read num1
read num2

if getsum $num1 $num2; then
 echo "Final sum is: $sum"
else 
 echo "Error"
fi

函数内进行return可以出现任意值

image

调试脚本

-x   在执行的时候显示参数和命令
+x   禁止调试
-v   在命令读取时显示输入
+v   禁止打印输入
-n   检测脚本中语法错误

命令:bash -[参数] [脚本名]

标签:bin,shell,15,num1,num2,编程,echo,bash,name
From: https://www.cnblogs.com/icui4cu/p/16645708.html

相关文章

  • 更改数据库1521端口
    1、找到 product\11.2.0\dbhome_1\NETWORK\ADMIN下面的 listener.ora&tnsnames.ora两个文件,记得先备份 2、分别修改文件内的端口号listener.ora 如下图所示,要......
  • 并发编程Bug起源:可见性、有序性和原子性问题
    以前古老的DOS操作系统,是单进行的系统。系统每次只能做一件事情,完成了一个任务才能继续下一个任务。每次只能做一件事情,比如在听歌的时候不能打开网页。所有的任务操作都按......
  • 无服务器计算编程语言采用
    无服务器计算编程语言采用本文介绍了主要云供应商提供的不同编程语言和运行时。采用情况和趋势是什么。每个云供应商都提供哪些编程语言?Serverlessprogramminglangua......
  • 我在编程学校学到的是……
    我在编程学校学到的是……在我的第一篇博客中,我开玩笑说我不知道​​我在Python的Pandas库中做了什么,但我喜欢弄清楚事情。我参加了GeneralAssembly的数据科学沉浸......
  • Go 网络编程
    互联网协议前言现在我们几乎每天都在使用互联网,我们前面已经学习了如何编写Go语言程序,但是如何才能让我们的程序通过网络互相通信呢?本章我们就一起来学习下Go语言中的网......
  • 基于padavan(openwrt) MIPS 的OpenSSL编译安装和编程基础
    设备还是之前那个e8820s 先把gccmakeperl装了opkginstallgccmakeperl这里有个问题,就是openssl1.1.0之后的版本要求perl5.10,opkg安装的是5.28,运行./Con......
  • Odoo 15 accrual move
    TableofContents场景处理逻辑销售订单采购订单  场景权责发生制,在应该确认收入的时候,却还没收到相关的文件,其实业务已经发生,此时需要对还没有记账的部分进行......
  • 8/31 深入理解计算机系统 第十一章 网络编程
    第十一章网络编程11.1客户端-服务器编程模型包含一个服务器进程和多个客户端进程。服务器管理某种资源,并通过操作这种资源给客户端提供某种服务。基本操作是:事务一个......
  • 推荐一款国产网络管理工具-FinalShell
    FinalShell是一款免费的国产的集SSH工具、服务器管理、远程桌面加速的良心软件,同时支持Windows,macOS,Linux,它不单单是一个SSH工具,完整的说法应该叫一体化的的服务器,网络管......
  • Python极客项目编程 中文PDF完整版入门到精通
     《Python极客项目编程》中文PDF完整版免费下载地址内容简介  · · · · · · Python是一种强大的编程语言,容易学习而且充满乐趣。但掌握了基本知识后,......