Linux编写脚本nsum求和,shell脚本学习与总结1.shell 脚本是区分⼩写的
2.Unix特殊字符有: ( ; $ ? & * () [] ` ‘ “ + 使⽤其时要进⾏转义()
3.Shell的注释以#开头
4.函数的定义
Function fuction_name(){
Command to execute
}
调⽤时直接⽤function_name.
5.控制结构
hen语句
If [ test_command ]
Then
Commands
if
lse语句
If [ test_command ]
Then
Commands
Else
commands
if
(else)语句
If [ test_command ]
Then
Commands
Elif [ test_command ]
Then
Commands
Else
Commands
Fi
4)for ... In语句
For loop_varible in argument_list
Do
Commands
done
5)while语句
While test_command_is_true
Do
Commands
Done
6)until 语句
Until test_command_is_true
Do
Commands
Done
7)case语句
Case $variable in
Match_1)
Commands_for_1
Match_2)
Commands_for_2
.
.
.
*) #option for other values
Commands_for_no_match
esac
6.break、continue、exit和return语句
Break跳出整个循环体,然后执⾏循环体外接下来的代码;
Continue 结束本次循环,继续下次循环;
Exit 退出整个脚本,⼀般在其后加⼊⼀个整数(如exit 0),作为返回代码发送给系统;Return ⽤于在函数中返回数据,或返回⼀个结果给调⽤函数
7.here⽂档
⽤于将输⼊重定向到某个交互式shell脚本或程序,⽽不需要⽤户介⼊。
Program_name << LABLE
Program_input_1
Program_input_2
.
.
Program_input_#
LABLE
注意,程序输⼊⾏中的LABLE标记之间是没有空⽩的,且输⼊的必须是程序所期望的准确数据,否则可能会失效。
8.符号命令
( )  在⼀个⼦shell中运⾏括号所括起来的命令
(( ))  在某个shell中对变量进⾏求值和赋值,并进⾏数学运算
$(( )) 对括起来的表达式进⾏求值
[ ]  与test命令相同
[[ ]]  ⽤于字符串⽐较
$( )  命令替换
` `    命令替换
9.命令⾏参数
命令⾏参数$0,$1,$2,...,$9是位置参数,$0指向的是命令本⾝。
命令shift⽤于位置参数向左移动,如shift命令命令$2成为$1。Shift加⼊⼀个数字来移动多个位置,如shift 3使得$4成为$1。shift是⼀种按照参数列出顺序来处理每个位置参数的良好⽅式。
10.特殊参数
$* 指定所有的命令⾏参数,与$@的意义⼀样。两者只有在加双引号时意义不同,如
“$*”将整个参数列表作为⼀个参数来获取,”$@”获取整个参数列表,并将它分隔成不同的参数。
$? 检查返回代码。⼀个成功执⾏完的命令返回代码为0,不成功是⼀个⾮0值。
11.双引号,单引号和 `(esc下⾯的按键)
单引号''对内容进⾏全引⽤,也就是说,对变量⼯命令语句使⽤⽂字正⽂,不进⾏任何替换;⽽双引号则进⾏部分引⽤,则允许字符替换或命令替换。
`(esc下⾯的按键)⽤于执⾏某个命令或脚本并替换其输出结果,即命令替换,相同功能有$( )。此外,如果希望每次使⽤某个变量时重新读取它的值,也可使⽤它,如`$PWD`,则每次使⽤这个变量时都会重新读取它的新值。
12.⽂件权限和粘滞位(suid,sgid)
⽂件权限有读,写,执⾏三种权限。将⽂件操作模式设为总是作为某个特定的⽤户(suid),或总是作为某个特定的组成员(sgid)来执⾏称为设置粘滞位。可以⽤命令chmod进⾏修改⽂件权限。
13.在远程主机上运⾏命令
Ssh user@hostname command_to_execute
如:ssh jack@192.168.1.3 “uptime”
14.设置陷阱
当某个程序被迫中⽌时,会有⼀个退出信号,这个信号称为⼀个陷阱(trap)。这样我们可以在捕捉到退出信号时执⾏命令,如捕获到退出信号1,2,3,15时退出:
Trap `echo “nEXITTING on a TRAPPED SINGAL”; exit` 1 2 3 15
注意不能捕获到kill -9.的退出信号。
15.查看⽤户信息
Who 提供每个登录⽤户的⽤户名、tty、登录时间及⽤户登录地(IP)
W 对who的扩展,包括作业进程时间,总⽤户进程时间等,但没有⽤户登录地信息。
Last 显⽰⾃wtmp⽂件创建开始登录过的⽤户名单信息,包括登录时间,退出时间,tty等。
16.ps命令
显⽰当前系统进程的信息。
17.与⽤户通信
Wall,rwall,write,talk
18.⼤⼩写⽂本
⽤tr或typeset命令。
VALUES = “AFCDLD”
Echo $VALUES | tr ‘[A-Z]' ‘[a-z]'  #将⼤写转换成⼩写;tr ‘[a-z]' ‘[A-Z]'则⼩写转换成⼤写
在VALUES前使⽤
Typeset -l VALUES  #将⼤写转换成⼩写;typeset -u 则⼩写转换成⼤写。
19.定时运⾏脚本cron
Crontab -e进⼊⽤户cron表添加定时脚本,如
在1⽉15⽇星期天0:12执⾏脚本/usr/bin/test.sh
#分(0-59) 时(0-23)⽇(1-31) ⽉(1-12) 星期(0-6for Sunday-saturday)
12 0 15 1 0 /usr/bin/test.sh
定时任务还可作⽤at命令。
20.输出控制
静默运⾏,即不输出任何内容到屏幕上: 2>&1 > /dev/null
输出到系统指定的控制台: > /dev/console
21.解析命令⾏参数getopts
Getopts optionstring VARIABLE
Optionstring 是所需的各种参数,⽤冒号隔开,如果不需要参数,则冒号可以省略。如果optionstring前有⼀个冒号,则任何未匹配到时会在VARIBLE中加载⼀个?号
使⽤getopts的作⽤是解析出参数,然后作⽤此参数做不同的操作。如:
While getopts :s:m:h:d:p: TM
Do
Case $TM in
S)
Do something
M)
Do something
.
.
.
)
Exit 1
Esaclinux循环执行命令脚本
22.逐⾏处理⽂件
While read LINE
Do
Echo “$LINE”
Done
23.作⽤select命令创建菜单
Select menu in Yes No Quit
Do
Case $menu in
Yes)
Do something
No)
Do something
Quit)
Break
*)
Do something
Esac
done
shell脚本学习
1,设置运⾏环境
在脚本的顶部写⼊:#!/bin/bash2,SHELL中变量与赋值str=hello
linux中变量不需定义,要⽤时直接赋值使⽤。如:str,注意等号两边不能有空格str=`ls -l /tmp/sh`  如果要把某个命令的执⾏结果赋给某个变量时,=号右边要⽤``括起来

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。