《2022年SHELL经典教程 .pdf》由会员分享,可在线阅读,更多相关《2022年SHELL经典教程 .pdf(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、#传送给命令Shell 的参数序号$-在 Shell 启动或使用set命令时提供选项$?上一条命令执行后返回的值$当前 shell 的进程号$!上一个子进程的进程号$所有的参数,每个都用双括号括起$*所有参数,用双括号括起$n 位置参数值,n 表示位置$0 当前 shell 名shell 数组Bash 中还可以使用数组变量,其赋值有两种:(1)name=(value1.valuen)此时下标从0开始(2)nameindex=value 数组下标的范围没有任何限制,同时也不必使用连续的分量.-$A=(a b c def)=$echo$A/取全部元素a b c def=$echo$A0/取第一个元
2、素a=/取得数组元素的个数$echo$#A 4$echo$#A*4 名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 9 页 -$echo$#A3/取得元素 3 的长度$=$A3=yaoshuyin/将第三个元素重新赋值$echo$A a b c yaoshuyin=/清除变量$unset A$echo$A$=/清空变量,即将值变为空$A=$echo$A$=A=B B=C unset$A 事实上所取消的变量是B 而不是A=示例while 循环=#建立数组arrSource=(arrJobs.php arrSubHangye.php arrFirst.php)arrDest=(bui
3、ldhr buildtrain/htdocs bankhr healthr elehr )#取数组无元素个数lenArrSource=$#arrSource*lenArrDest=$#arrDest*名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 9 页 -#循环列出数组元素i=0 while$i-lt$lenArrSource do echo$arrSource$i let i+done i=0 while$i-lt$lenArrDest do echo$arrDest$i let i+done=示例:for 循环=#源文件arrSource=(/home/800hr/htdo
4、cs/login_jump.php)#目标网站arrDest=(ithr elehr buildhr bankhr healthr ctvhr chenhr mechr clothr cneduhr 56hr tourhr foodhr greenhr cnlawhr waimaohr)for outer in$arrSource*#$arrSource*是数组中的所有元素do for inner in$arrDest*do echo ln-s$outer/home/$inner/campus/done done exit 退出信号0-正常终止,脚本结束1 SIGHUP 挂起,线路断开2 SI
5、GINT 终端中断,通常是Ctrl-c 名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 9 页 -3 SIGQUIT 退出键,子进程在终止前死掉9 SIGKILL kill-9 命令,不能捕获这种退出状态15 SIGTERM kill 命令的默认操作24 SIGSTOP 停止,通常为Ctrl-z 在远程主机上运行命令$ssh userhostname cmd 变量声明定义变量 name=cnscn 使用变量 echo$name#输出 cnscn 文件权限、suid 和 sgid suid 使程序总是做为所有者权限来执行sgid 使程序总是做为所者者组权限来执行chmod 权限选项
6、:4000 设置执行的用户ID 2000 设置执行的组ID 1000 设置成目录的链接权限,或设置文件的保存文本属性0400 所有者读取0200 所有者写权限0100 所有者执行权限0040 组读0020 组写0010 组执行0004 其他人读0002 其他人写0001 其他人执行内置的数学函数abs 绝对值log 自然对数名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 9 页 -acos 反余弦sin 正弦asin 反正弦sinh 双曲线正弦cos 余弦sqrt 平方根cosh 双曲线余弦tan 正切exp 指数函数tanh 双曲线正切int 浮点数的整数部分数学运算符+自加-
7、自减+一元加-一元减!逻辑非(求补码)*乘/除%求模(求余)+加-减 右移位=大于等于=相等!=不等&按位与 按位异或|按位或&逻辑与|逻辑或.其中的命令或变量允许用其值替换.其中的命令或变量不允许用其值替换.等同于$(.)的命令操作符,计算其中的表达式,并返回其值$*所有的命令行参数$同上$*把所有命令行参数当作一个来处理$获取整个参数列表,并将它分隔成不同的参数名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 9 页 -示例 for var in$*#分别试用$*,$,$*,$do echo$var done 命令行参数示例$script a b c d e 变量$0 表示 s
8、cript$1 a$2 b$3 c$4 d$5 e 符号命令()在一个子shell 中运行括号中的命令()在某个 shell 中对变量进行求值和赋值,并进行数学运算$()对括起的表达式进行求值 用于 if 的条件测试,与test 命令相同 用于字符串比较$()命令替换,常用于执行其中的命令并返回执行结果cmd 命令替换,常用于执行其中的命令并返回执行结果需要转义的特殊字符(;#$&*()+here 文档(heredoc)说明 here 文档:所需的输入位于些(here),而不是其他地方。用于将输入重定向到某个交互式shell 脚本或程序。通过为交互式脚本或程序提供所需要的输入,我们可以在she
9、ll 脚本中运行某个交互式程序或脚本,而不需用户介入。名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 9 页 -示例 /usr/local/bin/my_program HEREDOC Randy Robin Rusty Jim Tom HEREDOC#注意:前后不要有空格break 结束并退出循环continue 不执行 continue 下面的代码,而进入下一轮循环exit 退出脚本,常带一个整数给系统,如 exit 0 return 在函数中将数据返回或返回一个结果给调用函数的脚本case$variable in match_1).;match_2).;match_3).;
10、.*)#其他情况.;esac until test_command_is_true do command done while test_command_is_true do .名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 9 页 -done for loop_variable in argument_list do.done if test_command then.fi if test_command then.else.fi if test_command then .elif test_command then .elif test_command then .fi 注
11、释示例#!/usr/bin/ksh#Script:name_of_script#Author:authors_name#Datetime:date_of_script#Version:ver.1.名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 9 页 -#Platform:AIX,HP-UX,Linux,Solaris#Purpose:give a clear,.#Usage:name_of_script option.file.#-a,-all#do not hide entries starting with.#-A,-almost-all#do not list implied.and.#-author#print the author of each file#-b,-escape#print octal escapes for nongraphic characters#-block-size=SIZE#use SIZE-byte blocks#End of script 函数function function_name .或function_name().名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 9 页 -
限制150内