作者:along
时间:2020年12月29日20:01:16
1、gcc编译
gcc 支持的后缀名
后缀名 | 对应的语言 |
---|---|
.c | C原始程序 |
.C/.cc/.cxx | C++原始程序 |
.m | Objective-C原始程序 |
.i | 已经预处理的C原始程序 |
.ii | 已经预处理的C++原始程序 |
.s/.S | 汇编语言原始程序 |
.h | 预处理文件(头文件) |
.o | 目标文件 |
.a/so | 编译后的库文件 |
2、shell脚本的一些命令
- read
从终端中读取内容
常用参数 -p -t -s
-p:信息提示
-t:超时时间
-s:内容隐藏
例子:
read -p "请输入一个数字" -t 4 -s var
注:该例子中,输入的内容会存于 var
3、shell脚本
它交互地解释和执行用户输入的命令(命令解释器)
(1)交互式的执行 :用户输入一条指令,shell 解释并执行一条指令
(2)批处理式的执行 :可以将多条指令集中在同一个文本当中,运行一次文本,执行多条指令
3.1 运行脚本
- 运行方式
1、bash t.sh
2、sh t.sh
3、./t.sh (需要复制最高权限,用 chmod 0777 t.sh命令) - 例子
t.sh
#!/bin/sh
echo "OK"
3.4 变量类型
- 局部变量
局部变量就是在一个脚本当中被定义的,它只能运行在当前这个脚本当中,即它的作用范围就在当前脚本当中。 - 环境变量
不管是shell 脚本还是其他程序共同所依赖的环境,被称为系统环境变量。 - shell 变量
shell编程有特殊定义的一批变量,也被称作特殊变量
变量名 | 描述 |
---|---|
$0 | 获取当前脚本的脚本名称 |
$1 | 获取从终端传递到当前脚本的第一个参数 |
$2 | 获取从终端传递到当前脚本的第二个参数 |
... | |
$# | 获取从终端传递到shell 脚本中参数的个数 |
$* | 获取从终端传递的所有参数 |
$@ | 获取所有的参数与$* 保持一致 |
$? | 获取程序退出状态 可以当前函数的返回值来, 0 代表正常退出 非0值代表异常退出 |
$$ | 获取当前运行脚本的进程ID号 |
例子:
#!/bin/sh
echo "当前脚本名称:$0"
echo "当前脚本的第一个参数:$1"
echo "当前脚本的第二个参数:$2"
echo "当前脚本中传递的所有参数个数:$#"
echo "当前脚本中的所有参数:$*"
echo "当前脚本中所有的参数:$@"
echo "当前脚本的退出状态:$?"
echo "当前脚本的进程ID号:$$"
3.3 变量操作
- 新增变量并赋值
var=123
str=aa
echo "${var}"
echo "$str"
注:
(1)定义一个变量 : 变量必须是以数字 字符 下划线组成,定义变量的时候不能有 $出现 ,变量中还不能出现shell脚本中的关键字 ;
(2)变量的赋值: = 赋值号两边不能有空格出现 否则报错 ;
(3)取变量的值: ${变量名称} \ $变量名称 ,花括号的作用是为了分别变量名的边界 shell 中变量取值加与不加花括号 都可以合法取值。 建议在实际编写过程中加上 ,养成好的编程习惯 ;
(4)同一个变量 多次赋值以最后一次赋值为标准 。
- 删除变量
unset命令
例子(运行报错):
var=123
unset var
echo "${var}"
- 只读变量
readonly 命令,该变量不能用unset命令删除
例子(运行报错):
readonly var=123
unset var
echo "${var}"
3.4 运算符
包括算术运算符和关系运算符等。
- 两数相加
#!/bin/sh
var=4
ptr=2
sum=`expr ${var} + ${ptr}`
echo "${sum}"
(1)做算术运算的时候需要关键字 expr ,整个表达式必须通过 ` 符号来括起来;
(2) 算术运算符两边必须有空格,否则出错 ,比如: 2+3 语法不对 2 + 3 算术运算符两边必须有空格 。
-
算术运算符 + - * /
1、例子
#!/bin/sh
var=4
ptr=2
sum1=`expr ${var} + ${ptr}`
echo "${sum1}"
sum2=`expr ${var} - ${ptr}`
echo "${sum2}"
sum3=`expr ${var} \* ${ptr}`
echo "${sum3}"
sum4=`expr ${var} / ${ptr}`
echo "${sum4}"
2、算术运算符列表
运算符 | 说明 | 例子(a=10,b=20) |
---|---|---|
+ | 加法 | `expr ${a} + ${b}` 结果为30 |
- | 减法 | `expr ${a} - ${b}` 结果为-10 |
* | 乘法 | `expr ${a} * ${b}` 结果为200 |
/ | 除法 | `expr ${a} / ${b}` 结果为0.5 |
% | 取余 | `expr ${a} % ${b}` 结果为10 |
= | 赋值 | a=${b} 将b的数值赋值给a |
== | 相等(比较两个数字,相同则返回true) | [ ${a} == ${b} ] 返回false |
!= | 不相等(比较两个数字,不相等则返回true) | [ ${a} != ${b} ] 返回true |
- 关系运算符
运算符 | 描述 |
---|---|
-eq | 相等 |
-gt | 大于 |
-lt | 小于 |
-ge | 大于等于 |
-le | 小于等于 |
-ne | 不等于 |
用于判断左值和右值的大小关系
例子:
#!/bin/sh
echo "请输入var1的值:"
read var1
echo "请输入var2的值:"
read var2
if [ ${var1} -eq ${var2} ]
then
echo "$var1 == $var2"
fi
#=========================
if [ ${var1} -gt ${var2} ]
then
echo "$var1 > $var2"
fi
#=========================
if [ ${var1} -lt ${var2} ]
then
echo "$var1 < $var2"
fi
#=========================
if [ ${var1} -ge ${var2} ]
then
echo "${var1} >= ${var2}"
fi
#=========================
if [ ${var1} -le ${var2} ]
then
echo "${var1} <= ${var2}"
fi
#=========================
if [ ${var1} -ne ${var2} ]
then
echo "${var1} != ${var2}"
fi
3.5 shell字符串
字符串是shell 编程中最常用最有用的数据类型(只有数字和字符串)字符串可以用单引号,也可以用双引号,也可以不用引号。
注:整个 shell 编程中只有 数字与字符串 没有具体的数据类型
- 例子
#!/bin/sh
var=10
echo "${var}"
echo ${var}
echo '${var}'
结果
[root@liu SH]# ./t.sh
10
10
${var}
结论:在取变量的值的时候可以加双引号也可以不加双引号 都可取出变量的值,但如果加单引号取变量的值 整个变量会原样输出。
3.6 shell数组
语法:数组名=(元素1 元素2 元素3)
例子:
#!/bin/sh
array=(11 13 16 21)
echo "$0"
echo "${array[0]}"
echo "${array[1]}"
echo "${array[*]}"
echo "${array[@]}"
echo "${#array[*]}"
echo "$?"
echo "$$"
总结:array[0]表示取数组的第一个元素
array[*]和array[@]表示取数组的全部元素
#array[*]表示取得数组元素的个数
3.7 流程语句
3.7.1 if else 语句
(1)语法:
if [ 条件表达式 ]
then
语句1
语句2
......
fi
(2)例子
#!/bin/sh
var1=111
var2=111
if [ ${var1} -eq ${var2} ]
then
echo "${var1} == ${var2}"
fi
(3)拓展
语法:
if [ 条件表达式 ]
then
语句1
语句2
......
else
语句1
语句2
......
fi
或者
if [ 条件表达式 ]
then
语句1
语句2
......
elif [ 条件表达式 ]
语句1
语句2
......
else
语句1
语句2
......
fi
3.7.2 case esac语句
类似于c语言的switch case语句
语法:
case 变量名 in
变量1)
语句1
;;(双分号)
变量2)
语句2
;;(双分号)
......
*)
语句
esac
例子:
#!/bin/sh
read var
case ${var} in
"a1")
echo "var is ${var}"
;;
"a2")
echo "var is ${var}"
;;
"a3")
echo "var is ${var}"
;;
*)
echo "* case, var is ${var}"
esac
其中 *) 代表其他情况。
3.7.3 for循环
语法:
for NUM(变量) in 元素1 元素2 元素3 ......
do
执行的语句
done
for循环执行的次数即元素的个数
例子:
#!/bin/sh
for var in 1 2 3 4
do
echo "var is ${var}"
done
3.7.3 while循环
语法:
while [ 条件表达式 ]
do
执行语句
done
例子:
#!/bin/sh
i=0
while [ ${i} -lt 6 ]
do
echo "i is ${i}"
i=$((i+1))
done
3.8函数
(1)格式
function()
{
List of commands
[return value]
}
也可以在函数名前加上关键字function:
例如
function fun()
{
List of commands
[return value]
}
- 函数返回值,可以显示增加return 语句;如果不加,会将最后一条命令运行结果作为返回值。
- Shell 函数返回值只能是整数,一般用来表示函数执行成功与否,0表示成功,其他值表示失败。如果return其他数据。
- 如果一定要让函数返回字符串,那么可以先定义一个变量,用来接收函数的计算结果,脚本在需要的时候访问这个变量来获得函数返回值。
(2)例子
#!/bin/sh
function fun()
{
var1=1
var2=2
echo "var1=${var1} var2=${var2}"
return $((var1 + var2))
}
fun
echo $?
(3)关于函数的参数
函数的参数可以用$n来获取,其中n代表参数的序号
例子:
#!/bin/sh
function fun()
{
echo "para1=$1 para2=$2"
}
fun 4 5
网友评论