【Linux后端服务器开发】shell脚本 您所在的位置:网站首页 shell脚本定义变量语句 【Linux后端服务器开发】shell脚本

【Linux后端服务器开发】shell脚本

2023-06-19 10:58| 来源: 网络整理| 查看: 265

目录

一、变量

1. 普通变量

2. 环境变量

3. 位置变量

4. 特殊变量

二、输入输出

1. read命令接收输入

2. echo命令输出字符串

三、表达式

1. 算术表达式

2. 逻辑表达式

四、分支控制

1. if 分支

2. case 分支

五、循环控制

1. for 循环

2. while 循环

3. until 循环

4. select 循环

六、函数

1. 函数的格式

2. 函数的返回值

3. 函数参数

4. 库函数

一、变量

shell脚本只有一种数据类型,就是string字符串类型。

变量名必须是字母开头,可以包含数字、下划线等,不能有空格,不能使用关键字。

1. 普通变量

变量取值,可以与其他字符串构成新的字符串

变量赋值,用“=”赋值两端无空格

2. 环境变量

环境变量的级别:

系统级:System env-var用户级:User login env-var脚本级:Script env-var

查看系统的环境变量:

echo:显示某个环境变量,如 echo $PATH

export:设置一个新环境变量,export PATH=&PATH:/...要添加的路径.../

env:显示所有环境变量

unset:清除环境变量

set:显示本地定义的shell变量和环境变量

查看环境变量

#include int main(int argc, char* argv[], char* env[]) { for (int i = 0; env[i]; ++i) { printf("env[%d]: %s\n", i, env[i]); } }

通过环境变量区分root用户和普通用户

#include #include #include int main() { char* who = getenv("USER"); if (strcmp(who, "root") == 0) { printf("user: %s\n", who); } else { printf("user: %s, 权限不够\n", who); } }

自定义环境变量

#include #include #include #define MY_ENV "myenv" int main() { char* myenv = getenv(MY_ENV); if (myenv == NULL) { printf("%s, not found\n", MY_ENV); } else { printf("%s = %s\n", MY_ENV, myenv); } return 0; }

3. 位置变量 #!/bin/bash echo $0 echo $1 echo $2 echo $3 echo $4 echo $5 echo $6 echo $7 echo $8 echo $9

 打印命令行指令参数选项

        命令行指令通过不同的参数执行不同的任务

#include #include #include #include int main(int argc, char* argv[], char* env[]) { if (argc != 2) { printf("usage: \n\t%s [-a/-b/-c/-ab/-ac/-bc/-abc]\n", argv[0]); return 1; } if (strcmp("-a", argv[1]) == 0) { printf("功能%s\n", argv[1]); } else if (strcmp("-b", argv[1]) == 0) { printf("功能%s\n", argv[1]); } else if (strcmp("-ab", argv[1]) == 0) { printf("功能%s\n", argv[1]); } else if (strcmp("-abc", argv[1]) == 0) { printf("功能%s\n", argv[1]); } //... }

4. 特殊变量 最后一条命令状态:$?  (0成功,1失败,2错误)传递给script的参数的个数:$#将命令行所有的参数作为一个整体的字符串:$*查看进程的PID:$$ #!/bin/bash echo $# echo $*

 

二、输入输出 1. read命令接收输入 接收标准输入(键盘)的输入接收其他文件的输入得到输入后,将输入放入一个变量中read命令可以结合echo命令进行输入提示,也可用 -p 选项做输入提示read命令会一直阻塞等待用户输入,可以通过 -t 选项设置等待秒速read命令可以通过 -n 选项限制输入的字符数read命令可以通过 -s 选项进行静默输入,不显示输入内容,如密码的输入

2. echo命令输出字符串

echo命令加上 -n 选项,输出不换号

 

echo命令加上 -e 选项,支持转义字符

\b:向前回退一个\c:在字符串输入末尾不换号\n:回车换行\r:回车\v:换行\t:水平方向跳Tab制表符距离

 

echo的引用与转义

" ":可取值输出' ':将单引号内的值原样输出` `:将反撇号的内容当作命令取执行\:转义字符

三、表达式 1. 算术表达式

expr命令:+    -    *    /    %         (乘法运算符必须加上"",其他运算符可加可不加)

 

let命令:可赋值和计算

 

算术扩展格式:双小括号

bc工具:yum install -y bc

 

2. 逻辑表达式

通过 test命令 进行逻辑判断:

执行状态为0表示true,执行状态为1表示false,如果变量可能为空,需要加双引号-n 选项:变量非空则命令成功-z 选项:变量为空则命令成功-eq 是按照数值比较,= 是按照字符进行比较

复合条件判断:

-gt ,greater than ,大于-lt ,less than,小于-ge,greter or equal,大于等于-le,less or equal,小于等于-eq,数值等于-a ,and,与运算,可以用 && 替换-o,or,或运算,可以用 || 替换

test命令可用 [  ] 中括号等价替换,注意 "[ " 和 " ]",前后中括号之间都要有空格

文件或目录属性判断:

-e:判断文件或目录是否存在-d:判断是否为目录以及是否存在-f:判断是否为文件以及是否存在-r、-w、-x:判断权限

四、分支控制 1. if 分支

if 分支的结构

# 格式1:if 条件; then 执行; fi #! /bin/bash a=5 if [ $a -gt 3 ] then echo "OK" fi # 格式2:if 条件1; then 执行1; else 执行2; fi #! /bin/bash a=1 if [ $a -gt 3 ]; then echo "OK" else echo "error" fi # 格式3:if 条件1; then 执行1; elif 条件2; then 执行2; else 执行3; fi #! /bin/bash a=5 if [ $a -gt 8 ]; then echo ">8" elif [ $a -gt 3 ]; then echo ">3" else echo "


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有