Shell编程畅聊
发布时间:2021-11-20 14:00:38 所属栏目:教程 来源:互联网
导读:1.Shell中的特殊字符 # 注释 ; 命令分割符,可以将多个语句放在一行执行 (单引号) 强引用,在单引号中无法引用变量 (双引号) 类似于,但支持变量替换 ` `(反引号.为tab键上方按键) 用于引用命令的执行结果 2.变量 命名规则:以字母开头,可以使用数字字母 变量定
1.Shell中的特殊字符 # 注释 ; 命令分割符,可以将多个语句放在一行执行 ‘’(单引号) 强引用,在单引号中无法引用变量 " "(双引号) 类似于’’,但支持变量替换 ` `(反引号.为tab键上方按键) 用于引用命令的执行结果 2.变量 命名规则:以字母开头,可以使用数字字母 变量定义:declare varName 变量赋值:varName=值 变量值引用: $varName 导出变量: export varName[=value] 撤销变量: unset varName 特殊变量: $?:返回上一条命令的状态返回值 $1,$2...:位置变量 $#:脚本传入的所有参数个数 $*,$@:返回脚本传入的所有参数 3.条件测试 使用格式: test EXPR [ EXPR ] [[ EXPR ]] 文件测试 字符测试 整数测试 -a|-e FILE:是否存在 -S FILE:套接字文件 > :大于 -gt:大于 -f FILE:普通文件 -p FILE:命名管道文件 <:小于 -ge:大于等于 -d FILE:目录 -s FILE:是否为空文件 <=:小于等于 -eq:等于 -L FILE:符号链接文件 -r FILE:是否可读 >=:大于等于 -le:小于等于 -b FILE:块设备文件 -w FILE:是否各写 ==:等于 -lt:小于 -c FILE:字符设备文件 -x FILE:是否可执行 !=:不等于 -ne:不等于 FILE1 -nt FILE2 :FILE1的mtime是否新与FILE2 -n String :是否不空 FILE1 -ot FILE2 :FILE1的mtime是否旧与FILE2 -z String:是否为空 4.输入输出和重定向 标准输入:0 默认设备为键盘 标准输出:1 默认设备为显示器 标准错误输出:2 默认设备为显示器 >::覆盖输出 &>错误覆盖输出 >> :追加输出 &>>错误覆盖输出 &>:合并重定向 <:输入重定向 <<:此处文档 tee:分流,将结果输出到屏幕并重定向 5.Shell脚本格式 第一行顶格"#!/path/to/a/shell" 6.常用语法结构 条件判断 语法格式 示例 单分支if语句 if 语句1;then 语句1执行结果为真则执行 else 语句1执行结果为假则执行 fi 1 2 3 4 5 6 7 8 #!/bin/bash a=1 b=1 if [ $a -eq $b ];then echo "yes" else echo "no" fi 多分支if语句 if 语句1;then 语句1执行结果为真则执行 elif 语句2;then 语句2执行结果为真则执行 ... else 所有条件都不满足时执行 fi 1 2 3 4 5 6 7 8 9 10 #!/bin/bash a=1 b=2 if [ $a -gt $b ];then echo "a>b" elif [ $a -lt $b ];then echo "a<b" else echo "a=b" fi 循环结构 for varName in LIST;do 循环体 done 1 2 3 4 #!/bin/bash for i in {1..10};do echo $i done for ((var=#;测试条件;修正条件));do 循环体 done 1 2 3 4 #!/bin/bash for ((i=1;i<=10;i++));do echo $i done while 条件语句;do #条件为真时进入循环 循环体 done 1 2 3 4 5 #!/bin/bash while ! who|grep “^gentoo”;do echo “gentoo is not login” sleep 3 done until 条件语句;do 循环体 done 1 2 3 4 5 #!/bin/bash while who|grep “^gentoo”;do echo “gentoo is not login” sleep 3 done 条件选择 case $varName in exp1) 语句体1 ;; exp2) 语句体 2 ;; ... *) 语句体 n ;; 1 2 3 4 5 6 7 8 9 10 #!/bin/bash tmp=y case $tmp in y|yes) echo yes ;; n|no) echo no ;; *) echo “unknown” esac 7.函数使用和循环条件控制 函数声明方式 1 2 3 4 5 6 7 function 函数名{ 函数体 } 函数名() { 函数体 } 函数使用方式 函数名 [参数....] 参数可以在函数体中用位置变量引用 循环条件控制 continue:提前进入下一轮循环 break #: #默认为1,跳出#层循环 ![]() (编辑:开发网_开封站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |