加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_开封站长网 (http://www.0378zz.com/)- 科技、AI行业应用、媒体智能、低代码、办公协同!
当前位置: 首页 > 教程 > 正文

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,跳出#层循环

(编辑:开发网_开封站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读