shell脚本的编写(shell脚本编写1到100求和)

Linux如何编写shell脚本?

一般以#!/bin/sh开头(不是必须要写,但一定要单独一行),指定执行这个脚本的shell程序(也可以用#!/bin/zsh或其他),然后就是堆命令了。

Linux的shell脚本支持很多功能,加上Linux高度模块化的命令,完全可以用shell脚本写出复杂的程序。

以上只是简单介绍如何开始写shell脚本,如果要写复杂的脚本,还需要深入学习相关知识(如if――fi、case――esac等结构)。

当然,还需要给脚本加上可执行权限(chmod +x http://666.vip.cpolar.cn/file.sh),否则可以用sh http://666.vip.cpolar.cn/file.sh方式执行脚本(这里的sh是执行脚本所需shell,命令也可以是zsh http://666.vip.cpolar.cn/file.sh或其他)。

整个shell脚本,其实就相当于你在终端输入的一系列命令,如果想在shell里做什么,就先想想在终端可以做什么吧,字符的的连接,就是直接用 "" 双引号,输出,变量定义无 $ 符号,但是使用时一定要加上 $ 符号。

"="? 赋值符号,两边一定不能有空格,这和其他语言有区别,尤其是你还有自己代码美观风格时特别注意,否则会报语法错误!

for 中的数组内容是以 " " 空格分隔,而非 "," 逗号分格。

条件判断 [ true ] 中括号 后面需要有一个空格,但是两个中括号之间不能有空格如 [[ true ]]。

while 条件判断可以用 () 括号,也可以用 [[ ]] 中括号。

如果用windows写shell,一定要注意换行符格式 而非 \r , 需要借助一些编辑器(如notepad++)更改换行符格式!

如何编写简单的Shell脚本文件之Linux的基本操作

编写shell脚本 首先你要有Linux命令的基础,怎么进入文件,怎么执行文件,有什么命令等等。

我们的shell 类型有很多,常见的shell环境有sh,bash,csh,zsh等等。在Linux的脚本中可以最常见的就是 ?sh或者shell。在shell脚本中最开始 要指定shell环境。于是乎我们有了shell的沙邦:

/bin/sh 或者/bin/bash

shell脚本的格式:shell脚本一般是以*.sh 为名字,在权限上面是有可执行权限x的也就是chmod u+x *.sh

命令的执行:3种:

sh 脚本路径/脚本名

cd 脚本路径 http://666.vip.cpolar.cn/脚本名

soure 脚本路径/脚本

写一个最简单的脚本吧:

[root@linuxprobe ~]#vim 1.sh

/bin/sh

echo "this is my frist scripts,more and more linux ,you can read 《Linux就该这样学》"

[root@linuxprobe ~]#chmod u+x 1.sh

[root@linuxprobe ~]#http://666.vip.cpolar.cn/1.sh

this is my frist scripts,more and more linux ,you can read 《Linux就该这样学》

学习Linux需要多学多练

shell脚本书写方法

在shell学习过程中,感觉挺有用的一份比较,略整理分享给大家。

首先,shell的作用

用户的登陆shell 登陆后默认的shell程序是: /bin/bash

不同的shell内部指令,运行环境会有所区别

常见的shell有

/bin/sh

/bin/bash

/sbin/nologin

1.编写脚本代码:

使用vi编辑器,每行一条Linux命令,按照顺序执行

2.然后赋予脚本文件可执行的属性

3.执行脚本文件的三种方法

http://666.vip.cpolar.cn/chao.sh

sh /chao.sh

source /chao.sh

更完善的脚本构成

注释信息

可执行语句

重定向操作

类型 操作符 用途

重定向输入 从指定文件读取而不是从键盘输入

重定向输出 将输出文件保存到指定文件(覆盖原有内容)

将输出文件保存到指定文件(覆盖原有内容)

标准错误输出 2 将错误信息保存到指定的文件(覆盖原有内容)

2 将错误信息保存到指定的文件

混合输出 将标准输出,标准错误的内容保存到同一文件中

管道操作符号“|”

将左侧的命令输出结果,作为右侧命令的处理对象

shell变量的作用

为灵活管理Linux系统提供的特定参数,有两层意思

变量名:使用固定的名称,由系统预设或用户定义

变量值: 能够根据用户设置,系统环境的变化而变化

变量的类型

自定义变量:由用户自己定义,修改和使用

环境变量: 由系统维护,用于设置工作环境

位置变量: 通过命令行给脚本程序传递参数

预定义变量:BASH中内置的一类变量,不能直接修改

定义一个新的变量

格式: 变量名=变量值

变量名以字母或下划线开头,区分大小写,建议全大写

查看变量的值: echo $变量名

赋值时使用引号:

双引号:允许使用$符引用其他变量值

单引号: 禁止引用其他变量值,$视为普通字符

反撇号:命令替换,提取命令执行后的输出结果

将键盘输入内容为变量赋值

格式: read [-p "提示信息"] 变量名

设置变量的作用范围

export 变量名

export 变量名=变量值

两种格式可以混合使用

整数变量的运算:

expr 变量1 运算符 变量2 [运算符 变量3]

常见的运算符

加法运算符 +

减法运算符: -

乘法运算符:\*

除法运算符: /

取余运算:%

整数变量的运算(2)

((变量=变量运算符变量));

等号后面的变量可以是具体数值

例子:

((a=a+3));

环境变量:

由系统提前创建,用来设置用户的工作环境

配置文件: /etc/profile ~/.bash_profile

常见环境变量的举例

位置变量:

表示为$n, n为1~9之间的数字

预定义变量:

/etc/passwd /etc/shadow

例如一些服务的内置用户名或密码

如apache的启动用户就是预定义变量

条件测试操作

测试特定的 表达式是否成立,当条件成立时,测试语句的返回值为0,否则为其他数值

格式 : test 条件表达式

应用实例:

test -z 进行测试的时候 字符串长度为0的时候 结果才返回1

如果变量数值为0 返回0

条件测试操作

[ 操作符 文件或目录]

[5] 部分是判断表达式,-d表示判断是否是目录

是”逻辑与“操作符,只有前面的判断成立,后面的语句才会执行

-b的意思是判断 后面的路径是否是一个目录

echo $? 表示对刚刚执行的表达式进行判断

0表示成立,1表示不成立

-e filename 如果 filename存在,则为真 [ -e /var/log/syslog ]

-d filename 如果 filename为目录,则为真 [ -d /tmp/mydir ]

-f filename 如果 filename为常规文件,则为真 [ -f /usr/bin/grep ]

-L filename 如果 filename为符号链接,则为真 [ -L /usr/bin/grep ]

-r filename 如果 filename可读,则为真 [ -r /var/log/syslog ]

-w filename 如果 filename可写,则为真 [ -w /var/mytmp.txt ]

-x filename 如果 filename可执行,则为真 [ -L /usr/bin/grep ]

filename1-nt filename2 如果 filename1比 filename2新,则为真 [ /tmp/install/etc/services -nt /etc/services ]

filename1-ot filename2 如果 filename1比 filename2旧,则为真 [ /boot/bzImage -ot arch/i386/boot/bzImage ]

字符串比较运算符 (请注意引号的使用,这是防止空格扰乱代码的好方法)

-z string 如果 string长度为零,则为真 [ -z "$myvar" ]

-n string 如果 string长度非零,则为真 [ -n "$myvar" ]

string1=string2 如果 string1与 string2相同,则为真 [ "$myvar"="one two three" ]

string1!=string2 如果 string1与 string2不同,则为真 [ "$myvar" !="one two three" ]

算术比较运算符

num1-eq num2 等于 [ 3 -eq $mynum ]

num1-ne num2 不等于 [ 3 -ne $mynum ]

num1-lt num2 小于 [ 3 -lt $mynum ]

num1-le num2 小于或等于 [ 3 -le $mynum ]

num1-gt num2 大于 [ 3 -gt $mynum ]

num1-ge num2 大于或等于 [ 3 -ge $mynum ]

整数值比较

格式: [ 整数1 操作符 整数2 ]

字符串比较

格式1: [ 字符串1=字符串2 ]

[ 字符串1 !=字符串2 ]

格式2: [ -z 字符串 ]

逻辑测试:

格式1: [ 表达式1 ] 操作符 [ 表达式2 ]

格式2: 命令1 操作符 命令2

if语句的结构

while语句的语法结构

三个简单Linux的shell脚本程序编写

shell脚本和windows平台上的bat批处理是一样的,简化用户处理重复动作的操作,shell脚本由shell命令组成。

工具/原料

vim

ubuntu

方法/步骤

新建一个文件shell脚本一般用×.sh作为后缀当然勇气他的也可以。打开终端输入touch

first.sh

新建一个名为first的shell脚本。

编写一个简单的linuxshell脚本

使用vim

编辑first.sh也可以用其他的文本编辑器,推荐使用vim

使用命令

vim

first.sh打开,输入i进入编辑模式。

编写一个简单的linuxshell脚本

我们写入一个简单的shell脚本,注意第一行的代码解释器的指定,这里使用的是/bin/bash/

解释器

也可用其他的根据个人情况自己选择。

脚本解释:

echo

//显示一串字符并自动换行

read

NAME

//从屏幕获取一段字符,并赋予NAME

$NAME

//取NAME变量的值

#

//只用一个#表示注释文本

编写一个简单的linuxshell脚本

文件写完后按下esc键

退出插入模式,接着输入:wq

保存文本并退出文本编辑。

编写一个简单的linuxshell脚本

输入sh

+

脚本名称

运行脚本,或给文件可运行权限

chmod

+x

然后输入http://666.vip.cpolar.cn/first.sh运行脚本。

linux中如何编写shell脚本?

Shell脚本的名称可以随便定义,也不要什么后缀名,如magic

要创建一个shell脚本,你要使用任何编辑器比如vi在文本文件中编写他。

为了使用bash

shell执行脚本magic,其命令是:bash

magic或者http://666.vip.cpolar.cn/magic

如何编写一个shell脚本

问题:

1、请求在线api, 获取json格式的返回结果

2、解析json里面的一个值

3、将该值存储到文件

开发准备:

1、shell

快速入门:

#!/bin/sh

cd ~

mkdir shell_tut

cd shell_tut

for ((i=0; i10; i++)); do

touch test_$i.txt

done

创建一个文件夹, 并在里面新建10个文件

2、curl

使用curl请求网络, 并获取返回值

curl基本用法:

$ curl

直接返回网页内容

$ curl -o [文件名]

将网页内容存储到文件中, 相当于wget命令

赋值操作:

response=$(curl )

echo $response

注意:=前后没有空格

jq

jq是命令行解析json的很好的工具

安装

直接到官网下载Linux64版本(我是用本地下载好后传上服务器的, 之前直接在服务器用wget下载一直报错Segmentation fault, 折腾好久~)

将其copy到bin目录

cp jq-linux64 /usr/bin/jq

使用

然后就可以愉快的使用jq命令了:

可直接查看官网Tutorial

curl ''

返回的是一个json数组列表

curl '' | jq '.'

使用.直接指向json的根节点

curl '' | jq '.[0]'

[0]为取数组的第0位的对象

jq '.[0] | {message: .commit.message, name: .commit.committer.name}'

可用过连续的.操作获取对应json对象中的属性值, 上面的命令将会生成一个{message: "....", name: "...."}的json对象.

shell文件读写

1、写

方式一:

将ll的内容写入fileName这个文件中

是覆盖, 是在后面追加

ll fileName

但是在书写.sh脚本的时候, 需要增加echo

echo llfileName

2、读

while read LINE

do

echo $LINE

donefileName

fileName是即将读取的文件名

15人参与, 0条评论 登录后显示评论回复

你需要登录后才能评论 登录/ 注册