shell脚本入门,小规模试制牛刀

By admin in 美高梅手机版4858 on 2019年4月23日

一、终端打印

[root@cai ~]# echo welcome to bash!

welcome to bash!

 

[cairui@cai ~]$ echo ‘welcome to bash!’

welcome to bash!

 

[cairui@cai ~]$ echo “welcome to bash\!”

welcome to bash\!

(注意,双引号内无法直接用特殊符号,要求用转义符\)

 

[cairui@cai ~]$ printf “hello world”

hello world

 

#!/bin/bash

#filename:printf.sh

 

printf  “%-5s %-10s %-4s\n” no name mark

printf  “%-5s %-10s %-4.2f\n” 1 sarath 80.3456

printf  “%-5s %-10s %-4.2f\n” 2 james 90.9989

printf  “%-5s %-10s %-4.2f\n” 3 jeff 77.564

获取如下结果

[cairui@cai shell]$ sh printf.sh

no    name       mark

1     sarath     80.35

2     james      91.00

3     jeff       77.56

 

一.干活规律

  %s ,%c,%d和%f都以格式替换符,其所对应的参数能够停放带引号的格式字符串之后。

  %-5s指明格式为左对齐且宽度为伍的字符串替换,不够的用空格补上。

  对于%-4.二f,当中.2指定保留3个小数位。

二.补给内容

(壹)在echo中间转播义换行符

[cairui@cai shell]$ echo -e “1\t2\t3”

1 2 3

(二)打字与印刷彩色输出

重置=0,黑色=30,红色=31,绿色=32,黄色=33,蓝色=34,洋红=35,青色=36,白色=37

打印彩色文本

 

[cairui@cai shell]$ echo -e “\shell脚本入门,小规模试制牛刀。e[1;31m this is red text \e[0m”

 this is red text

 

设置彩色背景,重新设置=0,金色=40,淡暗黄=肆一,卡其色=4贰,品蓝=肆3,蓝紫=4四,浅中湖蓝=四伍,海军蓝=肆陆,松蓝绿=四7

 

 

一、极端打字与印刷

[root@cai ~]# echo welcome to bash!

welcome to bash!

 

[cairui@cai ~]$ echo ‘welcome to bash!’

welcome to bash!

 

[cairui@cai ~]$ echo “welcome to bash\!”

welcome to bash\!

(注意,双引号内无法一向用特殊符号,需求用转义符\)

 

[cairui@cai ~]$ printf “hello world”

hello world

 

#!/bin/bash

#filename:printf.sh

 

printf  “%-5s %-10s %-4s\n” no name mark

printf  “%-5s %-10s %-4.2f\n” 1 sarath 80.3456

printf  “%-5s %-10s %-4.2f\n” 2 james 90.9989

printf  “%-5s %-10s %-4.2f\n” 3 jeff 77.564

获得如下结果

[cairui@cai shell]$ sh printf.sh

no    name       mark

1     sarath     80.35

2     james      91.00

3     jeff       77.56

 

1.行事原理

  %s ,%c,%d和%f都以格式替换符,其所对应的参数能够停放带引号的格式字符串之后。

  %-伍s指明格式为左对齐且宽度为5的字符串替换,不够的用空格补上。

  对于%-四.贰f,个中.2钦命保留二个小数位。

二.填补内容

(壹)在echo中间转播义换行符

[cairui@cai shell]$ echo -e “1\t2\t3”

1 2 3

(二)打字与印刷彩色输出

重置=0,黑色=30,红色=31,绿色=32,黄色=33,蓝色=34,洋红=35,青色=36,白色=37

打字与印刷彩色文本

 

[cairui@cai shell]$ echo -e “\e[1;31m this is red text \e[0m”

 this is red text

 

安装彩色背景,复位=0,辣椒红=40,水绿=肆1,茶青=4二,巴黎绿=四三,深黑=4肆,草绿=45,砖红=46,铁灰=四7

 

 

Bash Shell 小试牛刀,bashshell小试牛刀

shell脚本入门

二、玩转变量和情状变量

  在bash中,每多个变量的值都以字符串。无论你给变量赋值时有未有引号,值都是以字符串格局存在。有1对特种的变量会被shell蒙受和操作系统情状用来囤积一些专程的值,那类变量就称为情形变量。

Cat /proc/$PID/environ(查看运转时的处境变量)

例子:

[cairui@cai shell]$ pgrep mysql

11029

11313

[cairui@cai shell]$ sudo cat /proc/11313/environ

TERM=xtermOLDPWD=/application/mysqlPATH=/sbin:/usr/sbin:/bin:/usr/bin:/application/mysql/binPWD=/application/mysqlSHLVL=3MYSQL_HOME=/application/mysql_=/usr/bin/nohup

[cairui@cai shell]$ sudo cat /proc/11313/environ |tr ‘\0’ ‘\n’

TERM=xterm

OLDPWD=/application/mysql

PATH=/sbin:/usr/sbin:/bin:/usr/bin:/application/mysql/bin

PWD=/application/mysql

SHLVL=3

MYSQL_HOME=/application/mysql

_=/usr/bin/nohup

 

壹.实战彩排

 

[cairui@cai shell]$ var=value

[cairui@cai shell]$ echo $var

value

 

Variable.sh代码如下:

#!/bin/bash

fruit=apple

count=5

echo “we have $count $fruit(s)”

[cairui@cai shell]$ sh variable.sh

we have 5 apple(s)

 

Export命令正是用来设置情况变量:

[cairui@cai shell]$ echo $PATH

/application/mysql/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/application/xtrabackup/bin:/home/cairui/bin

[cairui@cai shell]$ export PATH=”$PATH:/home/cairui”

[cairui@cai shell]$ echo $PATH

/application/mysql/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/application/xtrabackup/bin:/home/cairui/bin:/home/cairui

 

2.填补内容

length=${#var}

例如:

[cairui@cai shell]$ vai=1234567890

[cairui@cai shell]$ echo ${#vai}

10

 

二、玩转换量和意况变量

  在bash中,每一个变量的值都以字符串。无论你给变量赋值时有没有引号,值都是以字符串格局存在。有壹对例外的变量会被shell碰到和操作系统情状用来储存一些专程的值,那类变量就称为景况变量。

Cat /proc/$PID/environ(查看运营时的遇到变量)

例子:

[cairui@cai shell]$ pgrep mysql

11029

11313

[cairui@cai shell]$ sudo cat /proc/11313/environ

TERM=xtermOLDPWD=/application/mysqlPATH=/sbin:/usr/sbin:/bin:/usr/bin:/application/mysql/binPWD=/application/mysqlSHLVL=3MYSQL_HOME=/application/mysql_=/usr/bin/nohup

[cairui@cai shell]$ sudo cat /proc/11313/environ |tr ‘\0’ ‘\n’

TERM=xterm

OLDPWD=/application/mysql

PATH=/sbin:/usr/sbin:/bin:/usr/bin:/application/mysql/bin

PWD=/application/mysql

SHLVL=3

MYSQL_HOME=/application/mysql

_=/usr/bin/nohup

 

壹.实战排练

 

[cairui@cai shell]$ var=value

[cairui@cai shell]$ echo $var

value

 

Variable.sh代码如下:

#!/bin/bash

fruit=apple

count=5

echo “we have $count $fruit(s)”

[cairui@cai shell]$ sh variable.sh

we have 5 apple(s)

 

Export命令正是用来设置情形变量:

[cairui@cai shell]$ echo $PATH

/application/mysql/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/application/xtrabackup/bin:/home/cairui/bin

[cairui@cai shell]$ export PATH=”$PATH:/home/cairui”

[cairui@cai shell]$ echo $PATH

/application/mysql/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/application/xtrabackup/bin:/home/cairui/bin:/home/cairui

 

二.填补内容

length=${#var}

例如:

[cairui@cai shell]$ vai=1234567890

[cairui@cai shell]$ echo ${#vai}

10

 

一、顶点打印

[[email protected]
~]# echo welcome to bash!

welcome to bash!

 

[[email protected]
~]$ echo ‘welcome to bash!’

welcome to bash!

 

[[email protected]
~]$ echo “welcome to bash\!”

welcome to bash\!

(注意,双引号内无法一直用特殊符号,供给用转义符\)

 

[[email protected]
~]$ printf “hello world”

hello world

 

#!/bin/bash

#filename:printf.sh

 

printf  “%-5s %-10s %-4s\n” no name mark

printf  “%-5s %-10s %-4.2f\n” 1 sarath 80.3456

printf  “%-5s %-10s %-4.2f\n” 2 james 90.9989

printf  “%-5s %-10s %-4.2f\n” 3 jeff 77.564

收获如下结果

[[email protected]
shell]$ sh printf.sh

no    name       mark

1     sarath     80.35

2     james      91.00

3     jeff       77.56

 

一.行事原理

  %s
,%c,%d和%f都以格式替换符,其所对应的参数可以停放带引号的格式字符串之后。

  %-伍s指明格式为左对齐且宽度为伍的字符串替换,不够的用空格补上。

  对于%-四.二f,其中.2钦点保留二个小数位。

2.补充内容

(一)在echo中间转播义换行符

[[email protected]
shell]$ echo -e “1\t2\t3”

1 2 3

(二)打字与印刷彩色输出

重置=0,黑色=30,红色=31,绿色=32,黄色=33,蓝色=34,洋红=35,青色=36,白色=37

打印彩色文本

 

[[email protected]
shell]$ echo -e “\e[1;31m this is red text \e[0m”

 this is red text

 

安装彩色背景,重新载入参数=0,藤黄=40,浅白灰=四①,玉米黄=4贰,蓝紫=43,桃红=44,粉红=四伍,湖蓝=肆陆,金红=4七

 

 

 

三、选择函数加多情状变量

  PATH=/usr/bin;/bin

那象征如果shell供给试行二进制可实施文件时,它会率先查找/usr/bin,然后是/bin

 

三、应用函数增添情形变量

  PATH=/usr/bin;/bin

那代表即使shell需求试行二进制可实施文件时,它会率先查找/usr/bin,然后是/bin

 

二、玩转变量和碰着变量

  在bash中,每贰个变量的值都以字符串。无论你给变量赋值时有未有引号,值都以以字符串情势存在。有壹对越发的变量会被shell遇到和操作系统情况用来存款和储蓄一些专程的值,那类变量就叫做境况变量。

Cat /proc/$PID/environ(查看运营时的境遇变量)

例子:

[[email protected]
shell]$ pgrep mysql

11029

11313

[[email protected]
shell]$ sudo cat /proc/11313/environ

TERM=xtermOLDPWD=/application/mysqlPATH=/sbin:/usr/sbin:/bin:/usr/bin:/application/mysql/binPWD=/application/mysqlSHLVL=3MYSQL_HOME=/application/mysql_=/usr/bin/nohup

[[email protected]
shell]$ sudo cat /proc/11313/environ |tr ‘\0’ ‘\n’

TERM=xterm

OLDPWD=/application/mysql

PATH=/sbin:/usr/sbin:/bin:/usr/bin:/application/mysql/bin

PWD=/application/mysql

SHLVL=3

MYSQL_HOME=/application/mysql

_=/usr/bin/nohup

 

一.实战演习

 

[[email protected]
shell]$ var=value

[[email protected]
shell]$ echo $var

value

 

Variable.sh代码如下:

#!/bin/bash

fruit=apple

count=5

echo “we have $count $fruit(s)”

[[email protected]
shell]$ sh variable.sh

we have 5 apple(s)

 

Export命令正是用来安装境况变量:

[[email protected]
shell]$ echo $PATH

/application/mysql/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/application/xtrabackup/bin:/home/cairui/bin

[[email protected]
shell]$ export PATH=”$PATH:/home/cairui”

[[email protected]
shell]$ echo $PATH

/application/mysql/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/application/xtrabackup/bin:/home/cairui/bin:/home/cairui

 

二.填补内容

length=${#var}

例如:

[[email protected]
shell]$ vai=1234567890

[[email protected]
shell]$ echo ${#vai}

10

 

001

四、选用shell进行数学运算

  在bash shell景况中,能够动用let,[],(())实行基本的算术操作。而在展开尖端操作时,expr和bc那八个工具也会非凡有效。

1.实例

#!/bin/bash

#filename:jia.sh

no1=4;

no2=5;

let result=no1+no2

echo $result

[cairui@cai shell]$ sh jia.sh

9

自加操作

let no1++

自减操作

let no1–

简写格局

let no+=6

let no-=6

它们各自等于let no=no+陆和let no=no-6

(2)bc是二个数学高等工具,那几个Mini总括器包蕴了汪洋的选项。

 

[root@cai ~]# echo “4*8″|bc

32

 

no=54

result=’echo “$no*1.5”|bc’

echo $result

81.0

l 设定小数精度。下边,参数scale=贰将小数位个数设置为2.

[cairui@cai shell]$ echo “scale=2;3/8″|bc

.37

进制转变。用bc能够将一种进制系统转变为另壹种。(十进制调换2进制)

#!/bin/bash

#用途:数字转变

 

no=100

echo “obase=2;$no” |bc

 

no=1100100

echo “obase=10;ibase=2;$no” |bc

[cairui@cai shell]$ sh shuzizhuanhuan.sh

1100100

100

l 总计平方及平方根

[cairui@cai shell]$ echo “sqrt(100)”|bc

10

 

[cairui@cai shell]$ echo “10^10″|bc

10000000000

 

四、选取shell进行数学生运动算

  在bash shell碰到中,能够行使let,[],(())奉行基本的算术操作。而在拓展尖端操作时,expr和bc那多个工具也会特别有效。

1.实例

#!/bin/bash

#filename:jia.sh

no1=4;

no2=5;

let result=no1+no2

echo $result

[cairui@cai shell]$ sh jia.sh

9

自加操作

let no1++

自减操作

let no1–

简写格局

let no+=6

let no-=6

它们各自等于let no=no+陆和let no=no-陆

(二)bc是二个数学高等工具,那一个Mini总括器包涵了大气的选项。

 

[root@cai ~]# echo “4*8″|bc

32

 

no=54

result=’echo “$no*1.5”|bc’

echo $result

81.0

l 设定小数精度。上边,参数scale=贰将小数位个数设置为二.

[cairui@cai shell]$ echo “scale=2;3/8″|bc

.37

进制调换。用bc能够将壹种进制系统转变为另一种。(10进制调换二进制)

#!/bin/bash

#用途:数字转变

 

no=100

echo “obase=2;$no” |bc

 

no=1100100

echo “obase=10;ibase=2;$no” |bc

[cairui@cai shell]$ sh shuzizhuanhuan.sh

1100100

100

l 总括平方及平方根

[cairui@cai shell]$ echo “sqrt(100)”|bc

10

 

[cairui@cai shell]$ echo “10^10″|bc

10000000000

 

三、利用函数加多意况变量

  PATH=/usr/bin;/bin

那表示假如shell需求实施二进制可实践文件时,它会率先查找/usr/bin,然后是/bin

 

#!/bin/bash

五、玩转文件讲述符及重定向

  文件讲述符是与公事输入、输出相关联的整数。它们用来追踪已开荒的文书。最广大的文书讲述符是stdin(规范输入)、stdout(规范输出)和stderr(标准错误)。

0—–stdin

1—–stdout

2—–stderr

1.实例

[cairui@cai shell]$ echo “this is a sample text ” >temp.txt

[cairui@cai shell]$ cat temp.txt

this is a sample text

[cairui@cai shell]$ echo “this is a sample text ” >>temp.txt

[cairui@cai shell]$ cat temp.txt

this is a sample text

this is a sample text

当命令出现错误时,错误音信就会被打字与印刷出来

 

[cairui@cai shell]$ ls +

ls: cannot access +: No such file or directory(错误音信)

 

贰.干活规律

>等同于一>;对于>>也是同样一>>

(1)将文件重定向到命令

cmd < file

(2)将脚本内部的文本块实行重定向

#!/bin/bash

cat<<EOF>log.txt

LOG FILE HEADER

this is a test log

function:system statistics

EOF

 

[cairui@cai shell]$ sh log-txt.sh

[cairui@cai shell]$ cat log.txt

LOG FILE HEADER

this is a test log

function:system statistics

 

五、玩转文件讲述符及重定向

  文件讲述符是与公事输入、输出相关联的整数。它们用来追踪已开辟的文书。最广大的文本讲述符是stdin(标准输入)、stdout(标准输出)和stderr(规范错误)。

0—–stdin

1—–stdout

2—–stderr

1.实例

[cairui@cai shell]$ echo “this is a sample text ” >temp.txt

[cairui@cai shell]$ cat temp.txt

this is a sample text

[cairui@cai shell]$ echo “this is a sample text ” >>temp.txt

[cairui@cai shell]$ cat temp.txt

this is a sample text

this is a sample text

当命令出现错误时,错误消息就会被打字与印刷出来

 

[cairui@cai shell]$ ls +

ls: cannot access +: No such file or directory(错误新闻)

 

2.办事规律

>等同于1>;对于>>也是同11>>

(1)将文件重定向到命令

cmd < file

(贰)将脚本内部的文本块进行重定向

#!/bin/bash

cat<<EOF>log.txt

LOG FILE HEADER

this is a test log

function:system statistics

EOF

 

[cairui@cai shell]$ sh log-txt.sh

[cairui@cai shell]$ cat log.txt

LOG FILE HEADER

this is a test log

function:system statistics

 

四、使用shell实行数学生运动算

  在bash
shell碰着中,能够采用let,[],(())试行基本的算术操作。而在举办尖端操作时,expr和bc那八个工具也会分外管用。

1.实例

#!/bin/bash

#filename:jia.sh

no1=4;

no2=5;

let result=no1+no2

echo $result

[[email protected]
shell]$ sh jia.sh

9

自加操作

let no1++

自减操作

let no1–

简写情势

let no+=6

let no-=6

它们各自等于let no=no+陆和let no=no-陆

(二)bc是二个数学高档工具,那几个Mini总括器包蕴了多量的选项。

 

[[email protected]
~]# echo “4*8″|bc

32

 

no=54

result=’echo “$no*1.5”|bc’

echo $result

81.0

l 设定小数精度。上面,参数scale=贰将小数位个数设置为贰.

[[email protected]
shell]$ echo “scale=2;3/8″|bc

.37

进制转变。用bc能够将一种进制系统转变为另1种。(十进制调换二进制)

#!/bin/bash

#用途:数字转变

 

no=100

echo “obase=2;$no” |bc

 

no=1100100

echo “obase=10;ibase=2;$no” |bc

[[email protected]
shell]$ sh shuzizhuanhuan.sh

1100100

100

l 总结平方及平方根

[[email protected]
shell]$ echo “sqrt(100)”|bc

10

 

[[email protected]
shell]$ echo “10^10″|bc

10000000000

 

002

六、数组和关联数组

array_var=(1  2  3  4  5  6)#这一个值将会蕴藏在以0为初始索引的连天地方上

别的还是可以将数组定义为一组“索引-值”

array_var[0]=”test1”

array_var[1]=”test2”

……

……

……

……

array_var[5]=”test6”

 

echo $array_var[0]

test1

 

echo $array_var[*]

test1 test2 test3 test4 test5 test6

 

打字与印刷数老板度

echo ${#array_var[*]}

6

 

六、数组和涉及数组

array_var=(1  2  3  4  5  6)#这么些值将会积累在以0为初始索引的连年地方上

其余还足以将数组定义为1组“索引-值”

array_var[0]=”test1”

array_var[1]=”test2”

……

……

……

……

array_var[5]=”test6”

 

echo $array_var[0]

test1

 

echo $array_var[*]

test1 test2 test3 test4 test5 test6

 

打字与印刷数高管度

echo ${#array_var[*]}

6

 

五、玩转文件讲述符及重定向

  文件讲述符是与公事输入、输出相关联的整数。它们用来追踪已开荒的文书。最广大的文书讲述符是stdin(标准输入)、stdout(规范输出)和stderr(标准错误)。

0—–stdin

1—–stdout

2—–stderr

1.实例

[[email protected]
shell]$ echo “this is a sample text ” >temp.txt

[[email protected]
shell]$ cat temp.txt

this is a sample text

[[email protected]
shell]$ echo “this is a sample text ” >>temp.txt

[[email protected]
shell]$ cat temp.txt

this is a sample text

this is a sample text

当命令出现谬误时,错误音讯就会被打字与印刷出来

 

[[email protected]
shell]$ ls +

ls: cannot access +: No such file or directory(错误新闻)

 

2.干活规律

>等同于一>;对于>>也是一致壹>>

(一)将文件重定向到命令

cmd < file

(贰)将脚本内部的文本块实行重定向

#!/bin/bash

cat<<EOF>log.txt

LOG FILE HEADER

this is a test log

function:system statistics

EOF

 

[[email protected]
shell]$ sh log-txt.sh

[[email protected]
shell]$ cat log.txt

LOG FILE HEADER

this is a test log

function:system statistics

 

fruit=apple

七、选用小名

(壹)能够用以下措施开创1个小名

alias new_command=’command sequence’

(二)上述别称只是暂且的。为了使别称永世生效,可以将它位于~/.bashrc文件中

echo ‘alias cmd=”commadn seq”’ >> ~/.bashrc

(三)删除别称,只须要从~/.bashrc中删去就足以了

 

七、使用外号

(一)能够用以下措施成立3个外号

alias new_command=’command sequence’

(二)上述别称只是一时的。为了使外号永世生效,能够将它坐落~/.bashrc文件中

echo ‘alias cmd=”commadn seq”’ >> ~/.bashrc

(3)删除此而外号,只需求从~/.bashrc中去除就足以了

 

六、数组和事关数组

array_var=(1  2  3  4  5  6)#那几个值将会蕴藏在以0为起首索引的接连地方上

其它还是能够将数组定义为1组“索引-值”

array_var[0]=”test1”

array_var[1]=”test2”

……

……

……

……

array_var[5]=”test6”

 

echo $array_var[0]

test1

 

echo $array_var[*]

test1 test2 test3 test4 test5 test6

 

打字与印刷数主管度

echo ${#array_var[*]}

6

 

003

八、获取极限新闻

  tput和stty是两款终端管理工具。

1.实例

l 获取极限的行数和列数:

tput cols

tput lines

l 打字与印刷当前终端名:

tput longname

l 将光标移动到坐标(拾0,100)处:

tput cup 100 100

l 设置终点背景观:

tputsetb n

个中,n能够在0到七里边取值

l 设置文本样式为粗体

tput bold

l 设置下划线的起止:

tput smu1

tput rmu1

l 删除从此时此刻光标地方到行尾的具有内容:

tputed

l 在输入密码时,不应该展现输入内容:

#!/bin/bash

#filename:password.sh

echo -e “enter password:”

stty -echo

read password

stty echo

echo

echo password read

 

八、收获极限消息

  tput和stty是三款终端管理工科具。

1.实例

l 获取极限的行数和列数:

tput cols

tput lines

l 打字与印刷当前终端名:

tput longname

l 将光标移动到坐标(100,拾0)处:

tput cup 100 100

l 设置极端背景观:

tputsetb n

其间,n能够在0到七里头取值

l 设置文本样式为粗体

tput bold

l 设置下划线的起止:

tput smu1

tput rmu1

l 删除从近日光标地点到行尾的具有剧情:

tputed

l 在输入密码时,不该显示输入内容:

#!/bin/bash

#filename:password.sh

echo -e “enter password:”

stty -echo

read password

stty echo

echo

echo password read

 

七、选用别称

(壹)能够用以下办法开创三个别称

alias new_command=’command sequence’

(二)上述小名只是临时的。为了使别称永世生效,能够将它位于~/.bashrc文件中

echo ‘alias cmd=”commadn seq”’ >> ~/.bashrc

(三)删除了这一个之外号,只需求从~/.bashrc中除去就可以了

 

count=5

九、获取、设置日期和推迟

   多数顺序要以分歧的格式打字与印刷日期、设置日期和时间、依照日期和时间推行操作。延时一般性用于在程序施行进度中提供1段等待时间(举例壹秒)。比如需求在本子中对某项职务每隔5秒监视3回,就要求精晓如何在程序中进入延时。

1.实例

(1)[cairui@cai support-files]$ date

Tue Jun  6 15:27:22 CST 2017

(二)打字与印刷纪元时:

[cairui@cai support-files]$ date +%s

1496734094

 

[cairui@cai support-files]$ date –date “jan 20 2011” +%A

Thursday

(叁)用格式串结合+作为date命令的参数:

[cairui@cai support-files]$ date “+%d %b %y”

06 Jun 17

(4)设置时间和日期:

date -s “格式化的日子字符串”

例子:

date -s “21 june 2009 11:01:22”

(5)有时,大家必要检讨一组命令所消费的大运,以下代码:

#!/bin/bash

#filename:time_take.sh

start=$(date +%s)

commands;

statements;

 

end=$(date +%s)

difference=$((end – start))

echo time taken to execute commands is $difference seconds

2.行事原理

日期内容

格式

星期

%a(A)

%b(B)

%d

固定格式日期(mm、dd、yy)

%D

%y(Y)

小时

%I或%H

分钟

%M

%S

纳秒

%N

Unix纪元时(以秒为单位)

%s

 

 

3.互补内容

 在本子中推迟实践一段时间,能够用sleep;$sleep no_of_seconds.比如,上边包车型地铁脚本就动用tput和sleep从0开端计数到40:

#!/bin/bash

#filename:sleep.sh

echo -n Count:   (echo -n不换行输出)

tput sc

 

count=0;

while true;

do

  if [ $count -lt 40 ];

  then

      let count++;

      sleep 1;

      tput rc

      tput ed

      echo -n $count;

  else exit 0;

  fi

done

  在上头的例子中,变量count起先化为0,随后每循环一回便加1.echo语句打字与印刷出count的值。用tput sc存款和储蓄光标的地点。在每一次循环中,通过复苏此前存款和储蓄的光标的任务,在终点中打字与印刷出新的count的值。复苏光标的吩咐是tput rc。tput ed清除从眼下光标地点到行尾之间的保有剧情,使得旧的count值能够被消除并写入新值。循环内的一分钟延迟是因而sleep命令来兑现。

 

九、获取、设置日期和延缓

   大多程序要以不一样的格式打字与印刷日期、设置日期和岁月、依据日期和岁月实行操作。延时常见用于在程序实践进程中提供一段等待时间(比如1秒)。比如须求在剧本中对某项职务每隔5秒监视二回,就必要驾驭怎么在先后中进入延时。

1.实例

(1)[cairui@cai support-files]$ date

Tue Jun  6 15:27:22 CST 2017

(2)打字与印刷纪元时:

[cairui@cai support-files]$ date +%s

1496734094

 

[cairui@cai support-files]$ date –date “jan 20 2011” +%A

Thursday

(3)用格式串结合+作为date命令的参数:

[cairui@cai support-files]$ date “+%d %b %y”

06 Jun 17

(4)设置时间和日期:

date -s “格式化的日期字符串”

例子:

date -s “21 june 2009 11:01:22”

(五)有时,大家需求检查壹组命令所费用的小运,以下代码:

#!/bin/bash

#filename:time_take.sh

start=$(date +%s)

commands;

statements;

 

end=$(date +%s)

difference=$((end – start))

echo time taken to execute commands is $difference seconds

贰.行事规律

日期内容

格式

星期

%a(A)

%b(B)

%d

固定格式日期(mm、dd、yy)

%D

%y(Y)

小时

%I或%H

分钟

%M

%S

纳秒

%N

Unix纪元时(以秒为单位)

%s

 

 

3.互补内容

 在剧本中推迟施行一段时间,能够用sleep;$sleep no_of_seconds.比方,上面包车型客车台本就选择tput和sleep从0起头计数到40:

#!/bin/bash

#filename:sleep.sh

echo -n Count:   (echo -n不换行输出)

tput sc

 

count=0;

while true;

do

  if [ $count -lt 40 ];

  then

      let count++;

      sleep 1;

      tput rc

      tput ed

      echo -n $count;

  else exit 0;

  fi

done

  在地点的例证中,变量count伊始化为0,随后每循环1回便加一.echo语句打字与印刷出count的值。用tput sc存款和储蓄光标的职位。在历次循环中,通过苏醒从前存款和储蓄的光标的岗位,在终极中打字与印刷出新的count的值。恢复生机光标的授命是tput rc。tput ed清除从眼下光标地方到行尾之间的有所内容,使得旧的count值能够被清除并写入新值。循环内的一分钟延迟是透过sleep命令来兑现。

 

八、获得极限消息

  tput和stty是五款终端处理工科具。

1.实例

l 获取极限的行数和列数:

tput cols

tput lines

l 打字与印刷当前极端名:

tput longname

l 将光标移动到坐标(100,十0)处:

tput cup 100 100

l 设置极端背景象:

tputsetb n

其间,n可以在0到七之内取值

l 设置文本样式为粗体

tput bold

l 设置下划线的起止:

tput smu1

tput rmu1

l 删除从当下光标位置到行尾的有着情节:

tputed

l 在输入密码时,不应该显示输入内容:

#!/bin/bash

#filename:password.sh

echo -e “enter password:”

stty -echo

read password

stty echo

echo

echo password read

 

004

十、调弄整理脚本

(1)bash -x script.sh or sh -x script.sh

(二)使用set -x和set +x对剧本实行一些调节和测试。举个例子:

#!/bin/bash

#filename:debug.sh

for i in {1..6};

do

    set -x

    echo $i

    set +x

done

echo “script executed”

[cairui@cai shell]$ sh debug.sh

+ echo 1

1

+ set +x

+ echo 2

2

+ set +x

+ echo 3

3

+ set +x

+ echo 4

4

+ set +x

+ echo 5

5

+ set +x

+ echo 6

6

+ set +x

script executed

在地点的剧本中,只会打字与印刷出 echo
$i的调节和测试消息。因为运用了-x和+x对调整区域张开了限制。

(三)前边三种调节和测试都以内建的。他们常常以一向的格式生成调节和测试音信。可是在众多状态下,大家要求以自定义格式展现调节和测试音信。能够经过传递_DEBUG碰着变量来树立那类调节和测试风格。

#!/bin/bash

function DEBUG()

{

  [ “$_DEBUG” == “on” ]  && $@ || :

 

}

for i in {1..10}

do

  DEBUG echo $i

done

~          

[root@cai shell]# _DEBUG=on ./DEBUG.sh

1

2

3

4

5

6

7

8

9

10

作者们在每1个亟待打字与印刷调节和测试新闻的口舌前拉长DEBUG。假诺未有把_DEBUG=on传递给脚本,那么调节和测试音讯就不会被打字与印刷出来。在bash中,命令“:”告诉shell不要开始展览其余操作。

 

十、调护诊治脚本

(1)bash -x script.sh or sh -x script.sh

(二)使用set -x和set +x对台本进行部分调节和测试。比方:

#!/bin/bash

#filename:debug.sh

for i in {1..6};

do

    set -x

    echo $i

    set +x

done

echo “script executed”

[cairui@cai shell]$ sh debug.sh

+ echo 1

1

+ set +x

+ echo 2

2

+ set +x

+ echo 3

3

+ set +x

+ echo 4

4

+ set +x

+ echo 5

5

+ set +x

+ echo 6

6

+ set +x

script executed

在上面的剧本中,只会打字与印刷出 echo
$i的调节和测试消息。因为运用了-x和+x对调养区域打开了限制。

(叁)前边二种调节和测试都以内建的。他们日常以一定的格式生成调节和测试信息。不过在数不清场地下,大家需求以自定义格式展现调节和测试音信。能够经过传递_DEBUG景况变量来建立那类调节和测试风格。

#!/bin/bash

function DEBUG()

{

  [ “$_DEBUG” == “on” ]  && $@ || :

 

}

for i in {1..10}

do

  DEBUG echo $i

done

~          

[root@cai shell]# _DEBUG=on ./DEBUG.sh

1

2

3

4

5

6

7

8

9

10

我们在每二个急需打字与印刷调节和测试信息的言语前增进DEBUG。假若没有把_DEBUG=on传递给脚本,那么调节和测试新闻就不会被打字与印刷出来。在bash中,命令“:”告诉shell不要举办别的操作。

 

九、获取、设置日期和推迟

   大多程序要以不相同的格式打字与印刷日期、设置日期和岁月、依据日期和时间实践操作。延时普通用于在程序实行进度中提供一段等待时间(比方一秒)。举例须要在剧本中对某项职分每隔5秒监视三回,就要求知道哪些在程序中进入延时。

1.实例

(1)[[email protected]
support-files]$ date

Tue Jun  6 15:27:22 CST 2017

(二)打字与印刷纪元时:

[[email protected]
support-files]$ date +%s

1496734094

 

[[email protected]
support-files]$ date –date “jan 20 2011” +%A

Thursday

(3)用格式串结合+作为date命令的参数:

[[email protected]
support-files]$ date “+%d %b %y”

06 Jun 17

(四)设置时间和日期:

date -s “格式化的日期字符串”

例子:

date -s “21 june 2009 11:01:22”

(五)有时,大家须要检查一组命令所开销的时间,以下代码:

#!/bin/bash

#filename:time_take.sh

start=$(date +%s)

commands;

statements;

 

end=$(date +%s)

difference=$((end – start))

echo time taken to execute commands is $difference seconds

二.办事规律

日期内容

格式

星期

%a(A)

%b(B)

%d

固定格式日期(mm、dd、yy)

%D

%y(Y)

小时

%I或%H

分钟

%M

%S

纳秒

%N

Unix纪元时(以秒为单位)

%s

 

 

3.填补内容

 在剧本中推迟施行一段时间,能够用sleep;$sleep
no_of_seconds.举个例子,上面包车型大巴台本就选取tput和sleep从0开始计数到40:

#!/bin/bash

#filename:sleep.sh

echo -n Count:   (echo -n不换行输出)

tput sc

 

count=0;

while true;

do

  if [ $count -lt 40 ];

  then

      let count++;

      sleep 1;

      tput rc

      tput ed

      echo -n $count;

  else exit 0;

  fi

done

  在下面的事例中,变量count开始化为0,随后每循环2次便加一.echo语句打字与印刷出count的值。用tput
sc存款和储蓄光标的职位。在历次循环中,通过恢复生机从前存储的光标的岗位,在巅峰中打字与印刷出新的count的值。恢复生机光标的下令是tput
rc。tput
ed清除从近来光标地点到行尾之间的具备内容,使得旧的count值可以被破除并写入新值。循环内的一分钟延迟是透过sleep命令来贯彻。

 

echo “We have $count ${fruit}(s)”

十一、函数和参数

1.实例

大家得以创制实施一定职务的函数,也得以成立能够承受参数的函数。

(一)定义函数:

function fname()

{

  statements;

}

或者

fname()

{

  statements;

}

(二)只需求运用函数名就足以调用有些函数:

$fname  #实行函数

(三)参数能够传递给函数,并由脚本进行访问:

fname arg1 arg2;#传递函数

以下是函数fname 的定义。在函数fname中,包蕴了各个访问函数参数的秘诀。

fname()

{

echo $一,$2;访问参数一和参数二

echo “$@”;以列表的方法1次性打字与印刷全部参数

echo “$*”;类似于¥@,但是参数被用作单个实体

return 0;返回值

}

l $1是首先个参数

l $二是第二个参数

l $n是第n个参数

l “$@”被增添成”$一” “$2” “$三”等

l “$*”被扩充成”$一c$2c$三”,在那之中c是IFS的第3个字符

l “$@”要比$*用的多。

贰.补充内容

(1)递归函数

f() {echo $1;f hello;sleep 1;}

(贰)导出函数

export -f fname

 

十一、函数和参数

1.实例

我们得以创建实行一定职务的函数,也能够创建能够承受参数的函数。

(1)定义函数:

function fname()

{

  statements;

}

或者

fname()

{

  statements;

}

(2)只须求使用函数名就能够调用某些函数:

$fname  #举办函数

(三)参数能够传递给函数,并由脚本实行走访:

fname arg1 arg2;#传递函数

以下是函数fname 的定义。在函数fname中,包括了各样访问函数参数的措施。

fname()

{

echo $一,$二;访问参数1和参数二

echo “$@”;以列表的法子一遍性打字与印刷全部参数

echo “$*”;类似于¥@,然而参数被看成单个实体

return 0;返回值

}

l $一是首先个参数

l $2是第一个参数

l $n是第n个参数

l “$@”被增加成”$1” “$二” “$三”等

l “$*”被增添成”$壹c$二c$三”,其中c是IFS的首先个字符

l “$@”要比$*用的多。

2.补给内容

(一)递归函数

f() {echo $1;f hello;sleep 1;}

(二)导出函数

export -f fname

 

十、调养脚本

(1)bash -x script.sh or sh -x script.sh

(2)使用set -x和set +x对台本举办部分调节和测试。比方:

#!/bin/bash

#filename:debug.sh

for i in {1..6};

do

    set -x

    echo $i

    set +x

done

echo “script executed”

[[email protected]
shell]$ sh debug.sh

+ echo 1

1

+ set +x

+ echo 2

2

+ set +x

+ echo 3

3

+ set +x

+ echo 4

4

+ set +x

+ echo 5

5

+ set +x

+ echo 6

6

+ set +x

script executed

在上头的本子中,只会打印出 echo
$i的调节和测试音信。因为使用了-x和+x对调治将养区域进行了限定。

(三)后面二种调节和测试都是内建的。他们平常以一定的格式生成调节和测试消息。可是在不少景色下,大家须求以自定义格式显示调节和测试新闻。能够由此传递_DEBUG意况变量来建立那类调节和测试风格。

#!/bin/bash

function DEBUG()

{

  [ “$_DEBUG” == “on” ]  &&
[email protected]
|| :

 

}

for i in {1..10}

do

  DEBUG echo $i

done

~          

[[email protected]
shell]# _DEBUG=on ./DEBUG.sh

1

2

3

4

5

6

7

8

9

10

大家在每七个急需打字与印刷调节和测试音讯的口舌前增进DEBUG。倘使未有把_DEBUG=on传递给脚本,那么调节和测试新闻就不会被打字与印刷出来。在bash中,命令“:”告诉shell不要进行别的操作。

 

005

十二、不适用回车键来读取n个字符

  read是1个重中之重的bash命令,它用来从键盘或规范输入中读取文本。大家能够应用read以相互的款式读取来自用户的输入,不过read能做的可远远不止于此。任何编制程序语言的输入库多数都是从键盘读取输入;但唯有当回车键按下的时候,才标识着输入完结。而略带游戏里只必要按q就能自由技艺。

(壹)上面包车型客车讲话从输入中读取n个字符并存入变量variable_name;

read -n number_of_chars variable_name

例如:

read -n 2 var

echo $var

(二)用无回显的主意读取密码:

read -s var

(3)显示提醒消息:

read -p “enter input:” var

(四)在一按时间限制内读取输入:

read -t timeout var

 

read -t 2 var  #在二秒内将键入的字符串读入变量var

(5)用特定的定界符作为输入行的扫尾:

read -d delim_char var

 

read -d “:” var

hello:#var 被装置为hello

 

十二、不适用回车键来读取n个字符

  read是2个重大的bash命令,它用来从键盘或正规输入中读取文本。我们能够利用read以互动的花样读取来自用户的输入,不过read能做的可远远不止于此。任何编制程序语言的输入库大多都以从键盘读取输入;但唯有当回车键按下的时候,才标记着输入完成。而有点游戏里只必要按q就能释放手艺。

(一)下边包车型客车说话从输入中读取n个字符并存入变量variable_name;

read -n number_of_chars variable_name

例如:

read -n 2 var

echo $var

(二)用无回显的秘技读取密码:

read -s var

(三)展现提醒消息:

read -p “enter input:” var

(4)在特定时间限制内读取输入:

read -t timeout var

 

read -t 2 var  #在二秒内将键入的字符串读入变量var

(五)用特定的定界符作为输入行的了断:

read -d delim_char var

 

read -d “:” var

hello:#var 被设置为hello

 

十一、函数和参数

1.实例

咱俩得以创建试行一定职务的函数,也得以创立能够承受参数的函数。

(一)定义函数:

function fname()

{

  statements;

}

或者

fname()

{

  statements;

}

(贰)只必要运用函数名就可以调用有些函数:

$fname  #实行函数

(三)参数能够传递给函数,并由脚本实行走访:

fname arg1 arg2;#传递函数

以下是函数fname 的概念。在函数fname中,包括了种种访问函数参数的法门。

fname()

{

echo $一,$2;访问参数一和参数2

echo
“[email protected]”;以列表的格局三遍性打字与印刷全体参数

echo “$*”;类似于¥@,不过参数被当做单个实体

return 0;返回值

}

l $壹是首先个参数

l $2是第3个参数

l $n是第n个参数

l “[email protected]”被扩充成”$一” “$二” “$三”等

l “$*”被扩展成”$一c$贰c$三”,其中c是IFS的第三个字符

l “[email protected]”要比$*用的多。

2.补偿内容

(1)递归函数

f() {echo $1;f hello;sleep 1;}

(二)导出函数

export -f fname

 

 

十三、运转命令直至执行成功

  在日常工作中动用shell时,有时候命令只有知足某个原则大概某种外部事件(比方文件可以被下载)操作技术成功实施。这种情况下,你只怕希望再一次实行命令,直到成功甘休。

1.实例:

安分守纪以下办法定义函数:

repeat()

{

 while true

 do

$@ && return

done

}

也许把它放入shell的rc文件,更便利使用:

repeat() {while true;do $@ && return;done}

二.干活规律

  大家创制了函数repeat,它富含了2个然而while循环,该循环实践以参数格局(通过$@访问)传入函数的指令。假若命令实行成功,则赶回,进而Infiniti循环。

三.补偿内容

(1)壹种越来越快的做法

repeat() {while :; do $@ && return; done } 比第贰种办法快

(2)扩张延时

repeat wget -c ……..

repeat() {while :; do $@ && return; sleep 30; done}这使得命令每30秒运转贰回。

十三、运营命令直至推行成功

  在平凡职业中动用shell时,有时候命令唯有满意有个别原则恐怕某种外部事件(举个例子文件能够被下载)操作技术学有所成实施。那种意况下,你恐怕希望再一次实践命令,直到成功停止。

1.实例:

遵从以下办法定义函数:

repeat()

{

 while true

 do

$@ && return

done

}

要么把它放入shell的rc文件,更有益使用:

repeat() {while true;do $@ && return;done}

二.办事规律

  大家创立了函数repeat,它包罗了3个最棒while循环,该循环推行以参数情势(通过$@访问)传入函数的一声令下。要是命令奉行成功,则赶回,进而Infiniti循环。

三.补偿内容

(一)一种更加快的做法

repeat() {while :; do $@ && return; done } 比第1种方法快

(2)扩大延时

repeat wget -c ……..

repeat() {while :; do $@ && return; sleep 30; done}那使得命令每30秒运营三回。

十二、不适用回车键来读取n个字符

  read是2个关键的bash命令,它用于从键盘或规范输入中读取文本。我们得以使用read以相互的款型读取来自用户的输入,但是read能做的可远远不止于此。任何编制程序语言的输入库大多都是从键盘读取输入;但唯有当回车键按下的时候,才标识着输入落成。而有些游戏里只须求按q就能假释才干。

(1)下边包车型大巴语句从输入中读取n个字符并存入变量variable_name;

read -n number_of_chars variable_name

例如:

read -n 2 var

echo $var

(二)用无回显的不二秘技读取密码:

read -s var

(叁)展现提醒新闻:

read -p “enter input:” var

(肆)在一定期间限制内读取输入:

read -t timeout var

 

read -t 2 var  #在2秒内将键入的字符串读入变量var

(5)用特定的定界符作为输入行的利落:

read -d delim_char var

 

read -d “:” var

hello:#var 被安装为hello

 

006

十四、循环

(1)for循环

for var in list;

do

commands;

done

(2)while循环

while condition

do

   commands;

done

(3)until循环

它会直接循环,直到给定的规范为真。

x=0;

until [ $x -eq 9 ];

do

 let x++; echo $x;

done

 

十四、循环

(1)for循环

for var in list;

do

commands;

done

(2)while循环

while condition

do

   commands;

done

(3)until循环

它会一向循环,直到给定的规则为真。

x=0;

until [ $x -eq 9 ];

do

 let x++; echo $x;

done

 

十三、运作命令直至试行成功

  在普通职业中运用shell时,有时候命令唯有满意有个别规则大概某种外部事件(比方文件能够被下载)操作本领不负众望实行。那种景观下,你或许希望再度推行命令,直到成功结束。

1.实例:

根据以下情势定义函数:

repeat()

{

 while true

 do

[email protected]
&& return

done

}

抑或把它放入shell的rc文件,更有利使用:

repeat() {while true;do
[email protected]
&& return;done}

贰.行事规律

  大家创设了函数repeat,它涵盖了多个不过while循环,该循环试行以参数情势(通过[email protected]访问)传入函数的指令。假职责令施行成功,则赶回,进而无限循环。

三.补给内容

(一)壹种更加快的做法

repeat() {while :; do
[email protected]
&& return; done } 比第一种艺术快

(贰)扩展缓延长时

repeat wget -c ……..

repeat() {while :; do
[email protected]
&& return; sleep 30; done}那使得命令每30秒运转二回。

 

十五、正如与测试

1.实战

(1)if条件

if condition;

then

  commands;

fi

(2)else if和else

if condition;

then

  commands;

else if condition; then

  commands;

else

  commands;

fi

(三)算数相比

l 对变量或值举行算数条件决断:

[ $var -eq 0 ] #当$var等于0时,返回真

[ $var -ne 0 ] #当。。。为非0时,返回真

l -gt:大于

l -lt:小于

l -ge:大于或等于

l -le:小于或等于

(肆)字符串相比较

利用字符串比较时,最棒用双中括号,因为有时候选用单在那之中括号会发出错误,所以最棒避开它们。

l [[$str1=$str2]],相等再次回到真

l [[$str1==$str2]]检查字符串是还是不是等于的另一种写法

l [[$str1 !=$str2]]假定str一和str二区别,则赶回真

l [[$str1 > $str2]]

l [[$str1 < $str2]]

l [[-z $str1]],如若含有的是空字符串,再次来到真

l [[-n $str]],要是含有的是是非非空字符串,则赶回真

十五、正如与测试

1.实战

(1)if条件

if condition;

then

  commands;

fi

(2)else if和else

if condition;

then

  commands;

else if condition; then

  commands;

else

  commands;

fi

(3)算数相比较

l 对变量或值举行算数条件判断:

[ $var -eq 0 ] #当$var等于0时,返回真

[ $var -ne 0 ] #当。。。为非0时,返回真

l -gt:大于

l -lt:小于

l -ge:大于或等于

l -le:小于或等于

(4)字符串相比较

动用字符串比较时,最佳用双中括号,因为偶然选择单个中括号会暴发错误,所以最佳避开它们。

l [[$str1=$str2]],相等再次回到真

l [[$str1==$str2]]反省字符串是还是不是等于的另1种写法

l [[$str1 !=$str2]]假如str1和str二不平等,则赶回真

l [[$str1 > $str2]]

l [[$str1 < $str2]]

l [[-z $str1]],要是含有的是空字符串,再次来到真

l [[-n $str]],假设含有的黑白空字符串,则赶回真

十四、循环

(1)for循环

for var in list;

do

commands;

done

(2)while循环

while condition

do

   commands;

done

(3)until循环

它会间接循环,直到给定的尺码为真。

x=0;

until [ $x -eq 9 ];

do

 let x++; echo $x;

done

 

007

十五、比较与测试

1.实战

(1)if条件

if condition;

then

  commands;

fi

(2)else if和else

if condition;

then

  commands;

else if condition; then

  commands;

else

  commands;

fi

(叁)算数相比较

l 对变量或值进行算数条件判定:

[ $var -eq 0 ] #当$var等于0时,返回真

[ $var -ne 0 ] #当。。。为非0时,返回真

l -gt:大于

l -lt:小于

l -ge:大于或等于

l -le:小于或等于

(肆)字符串相比较

运用字符串比较时,最棒用双中括号,因为偶然接纳单在这之中括号会产生错误,所以最佳避开它们。

l [[$str1=$str2]],相等再次回到真

l [[$str1==$str2]]自己研究字符串是或不是等于的另一种写法

l [[$str1 !=$str2]]一经str1和str二区别等,则赶回真

l [[$str1 > $str2]]

l [[$str1 < $str2]]

l [[-z $str1]],即使含有的是空字符串,再次来到真

l [[-n $str]],若是带有的是非曲直空字符串,则赶回真

Shell 小规模试制牛刀,bashshell小规模试制牛刀 1、
终端打字与印刷
[[email protected]
~]# echo welcome to bash! welcome to bash!
[[email protected]
~]$ echo ‘welcome to bash!’ welcome to bash! [c…

#shell 变量的选拔

008

#shell 景况变量

009

echo $PATH

010

 

011

 

012

#加多一条新路径

013

export PATH=”$PATH:/home/usr/bin”echo $PATH

014

 

015

 

016

#获得字符串长度

017

var=123456echo ${#var}

018

 

019

 

020

#赢妥当前shell版本

021

echo $SHELL

022

echo $0

023

 

024

 

025

#自己批评当前用户是或不是顶级用户

026

if [ $UID -ne 0 ]; then

027

echo no root user please run as root

028

else echo ‘Root user’s

029

 

030

 

031

#运算 let no1++, let no1=-  let no+=6 let no-=6

032

no1=4

033

no2=5

034

let result=no1+no2

035

echo $result

036

 

037

 

038

#重定向文件  > 每便都会覆盖文件

039

echo “this is a sample 1” > temp.txt

040

#重定向 >> 追加文件

041

# 0 – 标准输入

042

#1 – 标准输出

043

# 贰 – 标准错误

044

echo “this is a sample 2” >> temp.txtecho ls > dd.txt 2>&1  

045

#错误消息和专门的工作音讯全部重定向到dd.txt中

046

 

047

 

048

#概念和行使数组

049

arr=(1 2 3 4)

050

echo ${arr[0]}

051

 

052

 

053

#另一种 生命格局

054

arr[0]=”test1″

055

arr[1]=”test2″

056

echo ${arr[0]}

057

index=5echo ${arr[$index]}

058

 

059

#涉及数组

060

#关周到组必要独自注明  declare -a  arr

061

 

062

arr[0]=wangdk;

063

arr[apple]=iphone5

064

 

065

也足以用

066

arr=([0]=wangdk [1]=test)

067

 

068

# 列出数组索引

069

echo ${$arr[*]}

070

echo ${!arrw[@]}

071

 

072

#一声令下外号

073

alias new_command=’command”

074

# 别名目前生效

075

alias install=’yum -y install’

076

# 永世生效

077

echo ‘alias cmd=”command” >> ~/.bashrc

078

 

079

#遮掩终端输入

080

echo -e “Enter password:”

081

stty -echo  #遮掩输出

082

read password

083

stty echo  #开荒输出

084

echo

085

echo Password read.

086

 

087

 

088

#日子相关命令脚本

089

date   #时间

090

date +%s  时间戳

091

date –date “2011-10-20 12:00:00” +%s  日期转时间戳

092

date –date “@1370059200” +%D           时间戳转日期

093

date –date “@1370059200” “+%Y/%m/%d %H:%M:%S”

094

 

095

#反省1组命令所需求的小运

096

#!/bin/bash

097

start=$(date +%s)

098

commands

099

end=$(date +%s)

100

difference = $((end – start))

101

 

102

   

103

#sleep 总结时间循环

104

 

105

#输出3个Count

106

echo -n Count

107

# 存款和储蓄光标地方

108

 

109

tput sc

110

 

111

#初阶化变量

112

count=0

113

while true

114

do

115

# 如果<40

116

if [ $count -lt 40 ];

117

# 自增

118

then let count++;

119

sleep 1;

120

 

121

#苏醒光标

122

tput rc

123

tout ed

124

# 输出

125

echo -n $count;

126

else exit 0;

127

fi

128

done

129

 

130

#shell 函数定义 传参

131

#/bin/bash

132

#filename function

133

function fname()

134

{

135

  echo $1, $2; #打字与印刷参数1, 参数二

136

  echo
“[email protected]”;
#以列表的不二秘技三次性打字与印刷打字与印刷

137

  echo “$*”;
#类似于[email protected]
可是参数被当做单位打字与印刷

138

  return 0;  #返回值

139

}

140

fname wangdk, sunshuzhen; #调用函数

141

echo $?  #近来函数再次回到值

142

 

143

#预读命令

144

cmd_output=$(ls | cat -n)

145

echo $cmd_output

146

 

147

#另壹种反引用

148

cmd_output=` ls } cat -n`

149

echo $cmd_output

150

 

151

#经过引用子shell的不二等秘书技保留空格和换行符

152

cat text.txt  #出口过滤空格

153

 

154

out=”$(cat text.txt)”

155

echo $out  #保持原样

156

 

157

#rand 命令 读取命令行字符

158

 

159

read -n 2 var  # 读取一个字符到 var 变量

160

echo $var

161

 

162

read -s var  # 用不回显得读取密码

163

echo $var

164

 

165

read -p “Enter input :” var

166

echo $var;

167

 

168

read -t 2 var #在2秒内读取变量

169

echo $var

170

 

171

read -d “:”  var  #高出字符: 才截至变量

172

echo $var

173

 

174

#IFS字符分隔符和迭代器

175

#IFS是系统预定的撤销合并符号,默以为空白字符,制表符和空格

176

data=”name,sex,rollno,location”

177

oldIFS=$IFS

178

IFS=,

179

for item in $data

180

do

181

echo Item: $item

182

done

183

IFS=$oldIFS

184

 

185

 

186

 

187

# IFS例子

188

#!/bin/bash

189

#filename

190

data=”root:x:0:0:root:/root:/bin/bash”

191

oldIFS=$IFS

192

IFS=”:”

193

count=0

194

for item in $data

195

do

196

[ $count -eq 0 ] && user=$item

197

[ $count -eq 6 ] && shell=$item

198

let count++

199

done

200

echo $user

201

echo $shell

202

IFS=$oldIFS

203

 

204

#不清楚除了 for item in $data 还有任何命令扶助么

205

#shell 循环迭代

206

 

207

for var in list;

208

do

209

commands;

210

done

211

 

212

#生成数组类别

213

 

214

for i in {a..z};

215

for i in (1..50};

216

 

217

while  condition

218

do

219

commands;

220

done

221

 

222

condition 用true 作为循环条件能发生有线循环

223

 

224

 

225

until 循环

226

在bash中还足以接纳1个独竖一帜的循环until 它会直接循环到给到定的规则

227

x=0

228

until [ $x -eq 9];

229

do

230

let x++

231

echo $x

232

done

233

 

234

 

235

#逻辑剖断结构

236

if condition;

237

then

238

commands;

239

fi

240

 

241

if condition;

242

then

243

commands

244

elif condition;

245

else

美高梅手机版4858,246

     commands

247

if

248

 

249

# 简洁版本

250

[ condition ] && action;  # 如果condition为真, 则执行action

251

[ condition ] || action      #如果condition 为假,   则执行action

252

 

253

# && 是逻辑运算符 || 逻辑或运算符

254

 

255

# -gt   大于

256

#-lt     小于

257

#-ge   大于或等于

258

#-le    小于等于

259

#-eq   等于

260

#-ne   不等于

261

 

262

#文件系统相关测试

263

[ -f $file_var ] #
假若个定的变量包括不荒谬的文本路径或文件名,则赶回真

264

[-x $var ] # 假使给定的变量包涵文件可实行,则赶回真

265

[-d $var]  # 要是给的变量包蕴目录,则赶回真

266

[-e $var]  # 若是变量包括文件的存在,则赶回真

267

[-c $var]  # 假诺变量包蕴二个字符设备文件的门径,则赶回真

268

[-b $var]  #假使变量包蕴壹块设备文件的路线,则赶回真

269

[-w $var]  #尽管变量文件可写,则赶回真

270

[-r  $var]  #若是变量文件是还是不是可读,则赶回真

271

[-L $var]  #万壹变量包罗1个符号链接,则赶回真

272

 

273

#字符串相比较

274

[ [ $str1 = $str2 ] ] #也正是重临真

275

[ [ $str1 == $str2 ] ] # 相等回到真

276

[ [ $str1 != $str2 ] ] # 不等于再次来到真

277

[ [ $str1 > $str2 ] ] #假若str一的假名逐1比str二大,则赶回真

278

[ [ $str1 < $str2 ] ] #假如str1的字母顺序比str2小,则赶回真

279

[ [ -z $str ] ]  # 假使str一包涵的空字符串,则赶回真

280

[ [ -n $str] ] #1旦str1 包蕴非空字符串,则赶回真

281

 

282

#组合判定

283

if [ [ -n $str ] ] && [ [ -z $str2 ] ];

284

then

285

commands;

286

fi

287

 

288

#test 命令能够节省立中学扩号

289

 

290

if [ $var -eq 0 ]; then echo “true”; fi

291

if test $var -eq 0; then  echo ‘true’; fi

 

001 #!/bin/bash 002 fruit=apple
003 count=5 004 echo We have $count ${fruit}(s) 005 006 007 #shell
变量的接纳 00八 #shell 意况变量 00玖 echo $PATH 010 011…

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有