精华内容
下载资源
问答
  • 1.Shell脚本可以将 Shell 终端解释器当作人与计算机硬件之间的“翻译官”,它作为用户与 Linux 系统内部的通信媒介,除了能够支持各种变量与参数外,还提供了诸如循环、分支等高级编程,语言才有的控制结构特性。...

    1.Shell脚本
    可以将 Shell 终端解释器当作人与计算机硬件之间的“翻译官”,它作为用户与 Linux 系
    统内部的通信媒介,除了能够支持各种变量与参数外,还提供了诸如循环、分支等高级编程,语言才有的控制结构特性。
    Shell 脚本命令的工作方式有两种:交互式和批处理。
    交互式(Interactive):用户每输入一条命令就立即执行。
    批处理(Batch):由用户事先编写好一个完整的 Shell 脚本,Shell 会一次性执行脚本中诸多的命令。2.编写简单Shell脚本
    vi example.sh #!/bin/bash pwd ls -al test*

    d86717e7450070fd93ecf0031f808d4c.png

    2.1 接收用户的参数
    Linux内设了用于接收参数的变量,变量之间可以使用空格间隔。例如0对应的是当前Shell脚本程序得名称,#对应的是总共有几个参数,?对应的是显示上一次命令的执行返回值,而2、$3……则分别对应着第 N 个位置的参数值.

    ca783f2f118edc6a0987c8f0711b9167.png


    vim example2.sh #!/bin/bash echo "当前脚本名称为$0" echo "总共有$#个参数,分别为$*" echo "第一个参数为$1,第五个为$5"

    c4d732c2a72ff07f76ed7b0b14ee316c.png

    2.2 判断用户参数
    Shell 脚本中的条件测试语法可以判断表达式是否成立,若条件成立则返回数字 0,否则便返回其他随机数值,切记,条件表达式两边均应有一个空格。

    40b5123753a0a9305f4446780c860a67.png


    按照测试对象来划分,条件测试语句可以分为 4 种:
    文件测试语句;
    逻辑测试语句;
    整数值比较语句;
    字符串比较语句。2.2.1 文件测试语句
    文件测试即使用指定条件来判断文件是否存在或权限是否满足等情况的运算符。
    运算符 作用 -d 测试文件是否为目录类型 -e 测试文件是否存在 -f 判断是否为一般文件 -r 测试当前用户是否有权限读取 -w 测试当前用户是否有权限写入 -x 测试当前用户是否有权限执行
    [ -d test.txt ]
    测试test.txt是否为目录类型,$?显示上一条命令执行后的返回值。如果返回值为 0,则目录存在;如果返回值为非零的值,则意味着目录不存在。

    8e1972580857a97c6295776ccccb98f4.png


    [ -e test.txt ]
    测试test.txt文件是否存在。

    26c9416aaff5fba04dbea2352c2f49ac.png

    2.2.2 逻辑测试语句
    Shell终端中逻辑“与”的运算符号是“&&”,它表示当前面的命令执行成功后才会执行它后面的命令。
    Shell终端中逻辑“或”的运算符号是“||”,表示当前面的命令执行失败后才会执行它后面的命令。
    Shell终端中逻辑“非”的运算符号是“!”,它表示把条件测试中的判断结果取相反值。
    [ -e test.txt ] && echo "Exist"
    判断文件是否存在,存在即输出“Exist”

    43b56dde756f378428a569d0ec860b64.png


    [ $USER = root ] || echo "user"
    当前用户不是root时,输出“user”

    7d5404a4278130aa7b2c5d3c5b7ddce1.png


    [ ! -e xxxxxx ] && echo "No Exist"
    当文件不存在时,输出“No Exist”

    805f3eda1f4e1bd49e02db2b0ce54631.png

    2.2.3整数值比较
    整数比较运算符仅是对数字的操作,不能将数字与字符串、文件等内容一起操作,而且不能使用等号、大于号、小于号来判断。
    运算符 作用 -eq 是否等于 -ne 是否不等于 -gt 是否大于 -lt 是否小于 -le 是否等于或小于 -ge 是否等于或大于
    [ 10 -eq 10 ]

    ddf3456ef69dba3a7a81121e02744f25.png


    [ 10 -le 11 ]

    30c614ba97f9c5f9cbbe93710128b579.png

    2.2.4 字符串比较语句
    字符串比较语句用于判断测试字符串是否为空值,或两个字符串是否相同。
    运算符 作用 = 比较字符串内容是否相同 != 比较字符串内容是否不同 -z 判断字符串内容是否为空
    [ -z $String]

    b95197175052a11edfe792f33c6ab80e.png


    [ $LANG != "http://en.US" ] && echo "Not http://en.US"

    7d27909ed9a153ef2fda2038fa0932a1.png

    3 流程控制语句
    包含if、for、while、case 这 4 种流程控制语句。3.1 if条件测试语句
    if 条件语句的单分支结构由 if、then、fi 关键词组成

    6025d79bbb8a65269aa633e9b39e7f3b.png


    DIR="/home/cdrom" if [ ! -e $DIR ] then mkdir -p $DIR fi
    判断cdrom文件是否存在,不存在创建目录
    if 条件语句的双分支结构由 if、then、else、fi 关键词组成

    33a9444c2a44d91443a2f71e7d4dc0fb.png

    #!/bin/bash ping -c 3 -i 0.2 -W 3 $1 &> /dev/null if [ $? -eq 0 ] then echo "HOST $1 is On-line." else echo "Host $1 is Off-line." fi

    f9da9ada8f47d885fa7c1fdcfa2e9066.png

    3.1 for 条件循环语句
    for 循环语句允许脚本一次性读取多个信息,然后逐一对信息进行操作处理。

    f61e18a44cd8176bf657f16fc876b788.png

    #!/bin/bash HLIST=$(cat ./ipadds.txt) for IP in $HLIST do ping -c 3 -i 0.2 -W 3 $IP &> /dev/null if [ $? -eq 0 ] then echo "Host $IP is On-line." else echo "Host $IP is Off-line." fi done
    读取ipadds.txt中的域名,循环使用ping命令测试是否可以连接

    af57afc762e050459567f59aba28d657.png

    3.1 while 条件循环语句
    while 条件循环语句是一种让脚本根据某些条件来重复执行命令的语句,它的循环结构往
    往在执行前并不确定最终执行的次数。#!/bin/bash PRICE=$(expr $RANDOM % 1000) TIMES=0 echo "商品价格为0-999之间,猜猜看是多少?" while true do read -p "请输入您猜测的价格数目:" INT let TIMES++ if [ $INT -eq $PRICE ] then echo "恭喜您答对了,实际价格是 $PRICE " echo "您总共猜了 $TIMES 次" exit 0 elif [ $INT -gt $PRICE ] then echo "太高了!" else echo "太低了" fi done

    79fdbf483777e4222ca2d861c6c44956.png

    3.1 case 条件测试语句
    case 条件测试语句和 switch 语句的功能非常相似!case 语句是在多个范围内匹配
    数据,若匹配成功则执行相关命令并结束整个条件测试;而如果数据不在所列出的范围内,则会去执行星号(*)中所定义的默认命令。

    52fa637b8a281bf3af99579bcac49943.png

    #!/bin/bash read -p "请输入一个字符,并按Enter字符键确认:" KEY case "$KEY" in [a-z] | [A-Z]) echo "您输入的是 字母" ;; [0-9]) echo "您输入的是 数字" ;; *) echo "您输入的是其他字符" esac

    137bb346130a7e5af335835c04f1be48.png

    4 计划任务服务程序
    计划任务分为一次性计划任务与长期性计划任务,大家可以按照如下方式理解:
    ➢ 一次性计划任务:今晚 11 点 30 分开启网站服务。
    ➢ 长期性计划任务:每周一的凌晨 3 点 25 分把/home/wwwroot 目录打包备份为
    backup.tar.gz。4.1 一次性任务命令 at
    "at 时间" 创建任务,默认使用交互式方法,Ctrl+D保存
    "at -l" 查看任务。
    "atrm 任务序号" 删除任务。

    0a11a8fe836d922bf8203d4610f70f08.png

    c56054d408a04420fb2ca7f3ab320add.png

    4.1 长期性计划任务 crontab
    "crontab -e" 创建、编辑计划任务
    "crontab -l" 查看当前计划任务
    "crontab -r" 删除某条计划任务

    6c46a83178aaff3c309c470f2cba0c4f.png


    字段 说明 分 取值为0~59的整数 时 取值为0~23的任意整数 日 取值为1~31的任意整数 月 取值为1~12的任意整数 星期 取值为0~7的任意整数,其中0与7均为星期日 命令 要执行的命令或程序脚本
    9 17 * * 1 echo 'contab run test' >> /home/test.txt
    每星期一17.05分执行echo命令

    f76d183fbd8c99e3353465e226453f04.png

    a3d9ebf2cc0cbcd506a3df1f428bccfb.png
    展开全文
  • 我是shell脚本的新手,我正在尝试创建一个简单的函数,它将返回作为参数传递的连接的两个字符串.我试过下面的代码function getConcatenatedString() {echo "String1 $1"echo "String2 $2"str=$1/$2echo "Concatenated ...

    我是shell脚本的新手,我正在尝试创建一个简单的函数,它将返回作为参数传递的连接的两个字符串.我试过下面的代码

    function getConcatenatedString() {

    echo "String1 $1"

    echo "String2 $2"

    str=$1/$2

    echo "Concatenated String ${str}"

    echo "${str}"

    }

    //我正在调用上面的函数

    constr=$(getConcatenatedString "hello" "world")

    echo "printing result"

    echo "${constr}"

    echo "exit"

    使用上面的代码运行脚本时,我看到下面的输出,

    printing result

    String1 hello

    String2 world

    Concatenated String hello/world

    hello/world

    exit

    如果你看代码我首先调用函数然后我回显“打印结果”语句,但结果首先是“打印结果”并回显函数内部的语句.以下语句是否调用该函数

    constr=$(getConcatenatedString "hello" "world")

    要么

    echo ${constr}

    正在调用这个函数?

    因为如果我注释掉#echo ${constr}那么没有什么能得到回应!请澄清我.

    展开全文
  • 利用$1 $2 $3等等来表示传入shell的参数,$0表示当前运行的脚本明亮名同时$$表示当前shell的进程ID$* 表示以一个单字符串来表示所有传入的参数$# 表示传入的参数个数$@ 与$*相同,但是使用时加上引号,这样会在引号...

    在Shell中 利用$1 $2 $3等等来表示传入shell的参数,$0表示当前运行的脚本明亮名

    同时$$表示当前shell的进程ID

    $* 表示以一个单字符串来表示所有传入的参数

    $#  表示传入的参数个数

    $@ 与$*相同,但是使用时加上引号,这样会在引号中返回各位置的参数(但是实际测试发现与$*没区别)

    $?  表示shell执行的结果 0表示正确,其他都是错误的结果。

    例如:编写一个shell脚本test.sh

    echo "now pid is $$"

    echo "the numbers of agrs :$#"

    echo "@args are : ""$@"

    echo "*args are : $*"

    echo "result are $?"

    赋上可运行权限后,执行./test.sh  joking love money

    输出:

    now pid is 15211(当前进程号)

    the number of args:joking love money

    @args are joking love money

    *args are joking love money

    result are 0

    展开全文
  • Linux读取shell命令返回的数据 Linux下编写代码时,有时候需要实现的功能已经有shell命令实现了,我们大可不必自己花费精力去实现这部分功能,直接在函数中调用shell命令并且获取到返回的数据,接下来就可以为所欲为...

    Linux读取shell命令返回的数据

    Linux下编写代码时,有时候需要实现的功能已经有shell命令实现了,我们大可不必自己花费精力去实现这部分功能,直接在函数中调用shell命令并且获取到返回的数据,接下来就可以为所欲为了。

    代码

    /*read linux shell return data*/
    /*author: LK*/
    #define CMD_1	"ifconfig"
    void read_cmd(char * cmd)
    {
    	FILE *stream;
    	//FILE *wstream;
    	char buf[1024];
    	
    	memset(buf, '\0', sizeof(buf));
    	stream = popen(cmd, "r");
    	//wstream = fopen("test_popen.txt", "w+");
    	fread(buf, sizeof(char), sizeof(buf), stream);
    	//fwrite(buf, 1, sizeof(buf), wstream);
    	pclose(stream);
    	//fclose(wstream);
    	printf("%s\n", buf);
    }
    
    int main(void)
    {
    	read_cmd(CMD_2);
    	return 0;
    }
    

    上述代码注释掉的内容为将读取到的数据写入文件。如果读取到的数据太长,可以将数组容量扩大,或者用其他办法。

    展开全文
  • Linux shell 函数

    2017-11-23 20:21:25
    Linux shell 函数 1.函数定义 shell中函数的定义格式如下: funname() {action;[return int;] } 说明: 1、可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。 2、参数返回,可以显示加:...
  • linux shell

    2012-03-12 09:39:39
    1位置参数 $0------shell名字 $1------传递给shell的第一个参数 $2------传递给shell的第二个参数 ...------ 上一个代码或者shell程序在shell中退出的情况,正常退出返回0,反之为非0值 3
  • Linux Shell

    2008-05-11 23:19:00
    Shell 的简单介绍: shell是人与LINUX之间的一个通信接口, 我们通过键入指令告诉shell, 而shell它会接收到你键入的指令,并把指令送到LINUX系统内核, 内核接到消息后,它会做相对应的处理,并把处理的结果返回给she
  • linux shell实现从函数返回数组

    千次阅读 2018-07-13 18:25:00
    #!/bin/bash function arraydb { //定义局部变量 local orginalarray local newarray local element local i orginalarray=($(echo''$@'')) newarray=($(echo''$@''))...element=$[ $# - 1 ] //数组个数-1 ...
  • Shell 函数linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。shell中函数的定义格式如下:[ function ] funname [()]{action;[return int;]}说明:1、可以带function fun() 定义,也可以直接fun() ...
  • linux Shell 函数用法

    2020-10-23 15:47:26
    linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。 shell中函数的定义格式如下: [ function ] funname [()] { action; [return int;] } 说明: 1、可以带function fun() 定义,也可以直接...
  • Linux shell 编程入门

    2017-11-15 14:57:27
    shell 编程概念(1) shell是一种命令行解释器,外壳有很多种类(2) shell 看成是Linux内核和用户沟通的桥梁,用户默认不能直接操作内核(3)可以通过shell外壳去操作,用户指令传递给shell,传递给Linux内核,内核接受去...
  • Linux shell的概述

    2019-03-05 20:14:19
    1. shell的作用 1) 命令解释器 2) 人机接口,解释用户输入的命令,变成可执行的2进制代码,并将执行的结果返回在标准终端上。 2. ShellLinux系统中的位置 用户请求shellLinux内核硬件 3. Shell后缀名:.sh...
  • Linux shell函数

    2019-02-19 23:23:59
    shell中函数的定义格式如下: [ function ] funname [()] { action; [return int;] } 说明: 1、可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。 2、参数返回,可以显示加:return 返回,...
  • 我们在有限的、有效的时间内,每天通过一个小时的学习,完全掌握Linuxshell编程1 shell简介在计算机科学中,Shell就是一个命令解释器。shell是位于操作系统和应用程序之间,是他们二者最主要的接口,shell负责把...
  • 1.将命令执行的整型数字结果返回并赋值给变量。 使用反引号包装命令字符串 TAB上的`scarlett@scarlett-X550VXK:~$ line=`cat /etc/passwd| wc -l` scarlett@scarlett-X550VXK:~$ echo $line 41 2.返回结果为数组。#...
  • Linux Shell函数返回值

    万次阅读 2012-09-07 13:03:16
    Shell函数返回值,一般有3种方式:return,argv,echo1) return 语句shell函数的返回值,可以和其他语言的返回值一样,通过return语句返回。示例:#!/bin/bash - function mytest() { echo "arg1 = $1" if [ $1 =...
  • linux shell 布尔运算

    2020-04-05 16:39:21
    true和false是shell的内置命令,返回逻辑值。例如: $ true $ echo $? 0 $ false $ echo $? 1 $?是一个特殊的变量,存放有上一个程序的结束状态 在shell里面,把0作为程序是否成功结束的标志。 2. 在shell中,...
  • 那么我们使用Python如何调用LinuxShell命令?下面来介绍几种常用的方法:1.os 模块1.1. os模块的exec方法族Python的exec系统方法同Unix的exec系统调用是一致的。这些方法适用于在子进程中调用外部程序的情况,因为...
  • Linux shell编程指南

    2015-05-29 22:40:12
    本书共分五部分,详细介绍了shell编程技巧,各种UNIX命令及语法,还涉及了UNIX下的文字处理以及少量的系统管理问题。本书内容全面、文字简洁流畅,适合Shell编程人员学习、参考。 目 录 译者序 前言 第一部分 ...
  • Linux Shell基本命令

    2016-08-03 13:54:06
    Linux Shell基本命令 1. sudo su root; //使用户获得root权限 2. cd ..//返回上级目录 3. cd / //返回根目录 4. cd /etc/a //进入a目录 5. cp a/b/c.index.php d/e //获取root权限之后把index.php复制到e...
  • 利用commands模块执行Linux shell命令

    千次阅读 2016-01-09 16:32:35
    用Python写运维脚本时,经常需要执行linux shell的命令,Python中的commands模块专门用于调用Linux shell命令,并返回状态和结果,下面是commands模块的3个主要函数: 1. commands.getoutput('shell command') ...
  • Linux shell学习总结

    2018-06-08 11:43:17
    1、#!/bin/sh 定义脚本解释器,将shell语句翻译成机器语言  2、${var} 变量定义:通过$符号定义,变量又可以分为环境变量,脚本变量等;统计变量的信息有如下指令: ...假返回1;也可以返回函数定义...
  • linux shell 总结

    2013-09-13 10:59:39
    1、$0——返回脚本的文件名,并且包括路径 2、$*——返回所有参数,一个字符串,参数之间使用空格隔开 3、$@——返回所有参数,一个参数一个字符串 4、$?——返回上一条命令的返回值 5、/dev/null——表示linux...
  • linux shell命令杂记

    2019-11-03 18:53:56
    最近在看一些shell命令...#grep是常用的搜索字符串命令,grep -q往往用于开发者在搜索时仅仅需要输出一个结果,如果匹配则返回0,如果不匹配,返回1。如果a.txt包含abc字符串,那么返回0。 grep -q “abc” a.txt ...
  • 本地变量的生命周期是当前进程中有效,如果在shell中启动令一个子进程或退出,此值无效。var_name=value #设置变量的值,返回var_name var_name:=value #如果如果没有值,则设置其值,返回var_name echo $var_name #...
  • 用Python写运维脚本时,经常需要执行linux shell的命令,Python中的commands模块专门用于调用Linux shell命令,并返回状态和结果,下面是commands模块的3个主要函数: 1. commands.getoutput(‘shell command’) ...
  • Linux Shell 函数返回值

    千次阅读 2017-01-09 21:11:57
    Shell函数返回值,常用的两种方式:...shell函数的返回值,可以和其他语言的返回值一样,通过return语句返回。 示例:#!/bin/sh function test() { echo "arg1 = $1" if [ $1 = "1" ] ;then return 1 els

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,593
精华内容 637
关键字:

linuxshell返回1

linux 订阅