2018-08-24 10:37:17 weixin_42350428 阅读数 66

什么是Shell
这里写图片描述

Shell版本
这里写图片描述
这里写图片描述

脚本的命名
这里写图片描述
命令解释权#!
这里写图片描述
创建一个最简单的Shell脚本
这里写图片描述
这里写图片描述
这里写图片描述

2019-12-04 15:49:42 qq_41729871 阅读数 69

1 Linux中的shell介绍

用户登录到Linux系统后,系统将启动一个用户shell。在这个shell中,可以使用shell命令或声明变量,也可以创建并运行shell脚本程序。运行shell脚本程序时,系统将创建一个子shell。此时,系统中将有两个shell,一个是登录时系统启动的shell,另一个是系统为运行脚本程序创建的shell。当一个脚本程序运行完毕,它的脚本shell将终止,可以返回到执行该脚本之前的shell。从这种意义上来说,用户可以有许多 shell,每个shell都是由某个shell(称为父shell)派生的。

2 shell中的变量

在子 shell中定义的变量只在该子shell内有效。如果在一个shell脚本程序中定义了一个变量,当该脚本程序运行时,这个定义的变量只是该脚本程序内的一个局部变量,其他的shell不能引用它,要使某个变量的值可以在其他shell中被改变,可以使用export命令对已定义的变量进行输出。 export命令将使系统在创建每一个新的子shell时定义这个变量的一个拷贝,但只对定义环境变量的shell中调用的子shell有效,对于其他独立的shell不可见。

3 不同shell的区别

实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。
而tcsh和bash只是不同的shell而已,他们的关系就像c++与java一样,都是编程语言。有很大的共同性,但有很多语法不同而已。
具体到具体的内容,列举下面几处差别:
在Tcsh中为变量赋值时,需要使用set命令。例如set NAME="Jhon"
在Tcsh中数组的下标是从1开始的,而Bash中则是从0开始的。
Bash中设置全局变量(也称环境变量),使用的命令是export,而Tcsh则使用setenv。
获取脚本参数时,Bash中一般使用$1、$2、$3等位置变量,而Tcsh则使用$argv[1]、$argv[2]、$argv[3]等读取参数。
在Bash中获取信号的命令是trap,而Tcsh中则使用onintr。

4 export 命令

Linux export 命令用于设置或显示环境变量。
在 shell 中执行程序时,shell 会提供一组环境变量。export 可新增,修改或删除环境变量,供后续执行的程序使用。export 的效力仅限于该次登陆操作。
语法export [-fnp][变量名称]=[变量设置值]
参数说明:
-f  代表[变量名称]中为函数名称。
-n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
-p  列出所有的shell赋予程序的环境变量。
参考文档:
(1)
版权声明:本文为CSDN博主「chenchen410」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/chenchen410/article/details/39183517
(2)
https://blog.csdn.net/sh_uang/article/details/72809849
(3)
https://www.runoob.com/linux/linux-comm-export.html

2016-12-13 11:38:54 zyf_balance 阅读数 360

1. 建立sh文件

vim hello.sh

2. 编写内容

#!/bin/sh
/opt/jetty/bin/jetty.sh restart

3. 配置访问权限
chmod +x hello.sh

4. 执行文件
./hello.sh

2019-04-14 18:21:19 weixin_44878850 阅读数 37

                                    Linux中的Shell数组

数组,相当于多个相同类型的变量组成的集合,shell中没有限定数组的大小。

1,定义数组

在shell中,用括号来表示数组,数组元素用“空格”符号分割开。

格式       数组名=(值1  值2  值3.......值n)

2,读取数组

格式                    ${数组名[下标]}

3,获取数组中所有的元素

格式     ${数组名[@]}

4,获取数组的长度

①获取数组中元素的个数,就是看数组有多少个元素

②获取数组单个元素的长度

shell    注释

以#口头的行就是注释,会被解析器忽略

注意:shell里没有多行注释,只能每一行加一个#号

 

2017-08-27 23:12:34 qingsong3333 阅读数 588
linux:使用shell读写MySQL数据库

本文用一个示例,简单演示了如何使用shell脚本读写MySQL数据库。

主要工作如下:
1. 创建数据库sample
create database sample;

2. 创建表employee
drop table if exists employee;
create table employee(EMPNO char(6), FIRSTNME varchar(12), JOB char(8));

3. 从以下文件中读取内容,并按行插入表employee中
/tmp/info.txt
000010 CHRISTINE PRES
000020 MICHAEL MANAGER
000030 SALLY DESIGNER
000050 JOHN MANAGER
000060 IRVING DESIGNER
000070 EVA CLERK
000090 EILEEN SALESREP

4.查询表employee
select * from employee;

脚本内容如下:

qingsong@db2a:/tmp$ cat mysql.sh

#!/bin/bash
#filename:mysql.sh

username=root
passwd=qingsong

# 1. create db 
mysql -u $username -p$passwd <<EOF 2> /dev/null
create database sample;
EOF

[ $? -eq 0 ] && echo "create db sample succeed" || echo "DB sample already exist"

# 2. create table
mysql -u $username -p$passwd sample <<EOF 2> /dev/null
drop table if exists employee;
EOF

mysql -u $username -p$passwd sample <<EOF 2> /dev/null
create table employee(EMPNO char(6), FIRSTNME varchar(12), JOB char(8));
EOF

[ $? -eq 0 ] && echo "create table employee succeed" || echo "Create table employee succeed"

# 3. insert data
while read line
do
        empno=`echo $line | awk '{print $1}'`
        firstname=`echo $line | awk '{print $2}'`
        job=`echo $line | awk '{print $3}'`
        query=`echo "'"$empno"'","'"$firstname"'","'"$job"'"`

        mysql -u $username -p$passwd sample <<EOF 2> /dev/null
insert into employee values($query);
EOF

        [ $? -eq 0 ] && echo "Insert succeed on empno $empno" || echo "Insert failed on empno $empno"

done < /tmp/info.txt

# 4. select data

echo "Data from table employee"
mysql -u $username -p$passwd sample <<EOF 2> /dev/null
select * from employee;
EOF

运行效果:
qingsong@db2a:/tmp$ bash mysql.sh
DB sample already exist
create table employee succeed
Insert succeed on empno 000010
Insert succeed on empno 000020
Insert succeed on empno 000030
Insert succeed on empno 000050
Insert succeed on empno 000060
Insert succeed on empno 000070
Insert succeed on empno 000090
Data from table employee
EMPNO FIRSTNME JOB
000010 CHRISTINE PRES
000020 MICHAEL MANAGER
000030 SALLY DESIGNER
000050 JOHN MANAGER
000060 IRVING DESIGNER
000070 EVA CLERK
000090 EILEEN SALESREP

脚本的一些说明:

说明1
第3步, insert data中,有这么一行:
query=`echo "'"$empno"'","'"$firstname"'","'"$job"'"`
原因是employee表的三个字段都是char或者varchar型的,插入的时候两边要加上单引号

说明2
每一个EOF必须要在行首,即不能缩进

LINUX中的SHELL

阅读数 238

linux shell

阅读数 506

linux shell

博文 来自: bravezhe
没有更多推荐了,返回首页