美文网首页
linux基础学习002

linux基础学习002

作者: 千转军师 | 来源:发表于2020-12-29 20:41 被阅读0次

作者: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

相关文章

网友评论

      本文标题:linux基础学习002

      本文链接:https://www.haomeiwen.com/subject/mryqoktx.html