Shell编程学习之变量的使用

news/2024/11/20 13:42:17/
  • 查看当前系统使用的命令解释器:
linux@ubuntu:~$ echo $SHELL
/bin/bash
  • shell命令:
  • 在终端上使用的命令,例如
 vi a.cgcc a.c./a.out
  • shell脚本:
  • 其是一个.sh文件,里面都是命令的集合,以及一些复杂的逻辑;
  • 执行shell脚本的三种方式:
  • ./脚本名
  • bash 脚本名
  • source 脚本名
  • 脚本中的变量命名规范:
  • 由数字、字母、下划线构成;
  • 不能以数字开头;
  • 不能和shell语言的关键字冲突;
  • 一般情况下,变量的英文字母要大写;
  • 引用变量值:
  • $变量名OR${变量名};例如:
K1=welcometobeijing
echo $K1
  • 清空变量值:
  • unset 变量名;例如:
unset K1
  • 测试脚本:
#!/bin/bashK1=WELCOMETOBEIJING
echo $K1K2="WELCOME TO BEIJING"
echo $K2
K3="WELCOME TO HENAN"
echo $K3K4="HI $K2"
echo $K4K5="HELLO $K3 HAVE FUN"
echo $K5K6="${K1}HEVE A GOOD TIME"
echo $K6K7=$K1
echo $K7unset K1
K8=$K1
echo $K8
  • 运行结果:
WELCOMETOBEIJING
WELCOME TO BEIJING
WELCOME TO HENAN
HI WELCOME TO BEIJING
HELLO WELCOME TO HENAN HAVE FUN
WELCOMETOBEIJINGHEVE A GOOD TIME
WELCOMETOBEIJING
  • 位置变量:
  • 类比C语言中的main函数两个参数argc和argv;
  • $0:#(shell注释符号)有三种执行方式:
  • 1、./脚本名:结果:./脚本名
  • 2、bash 脚本名:结果:脚本名
  • 3、source 脚本名:结果:bash;
  • $1 ~$9:执行脚本时,命令行传递的是第一个至第九个参数,超过9,就需要加{},例如:${15};
  • $@:命令行的所有参数(不包含脚本名字),同理,$*也是这样的作用;
  • $#:命令行的所有参数的个数(不包含脚本名字);
  • $$:执行脚本的进程号PID
  • $?:判断上一条命令执行是否成功,结果为0,则成功,为1,则失败;
  • 变量的作用域:
  • 默认是全局;
  • 定义局部变量,需要在变量名增加local来修饰(注意和变量名之间存在空格);
  • 测试脚本:
#!/bin/bashfunction peter(){K1=WANGWUlocal K2=TAIHANGecho $K2 #TAIHANG}peter #调用函数
echo $K1 #WANGWU
echo $K2 #空
  • 运行结果:
TAIHANG
WANGWU
  • 只读变量:
  • 需要使用readonly关键字修饰;
  • 不能给只读变量赋值,会报错,例如:
readonly K1=YUCHUAN
K1=HAUNGHE 
echo $K1 #报错
  • 命令置换符:
  • 把命令执行的结果赋值给变量;
  • $()和反引号``,例如:
K1=$(ls -l)
echo $K1
K2=`ping 192.168.2.88`
echo $K2

http://www.ppmy.cn/news/1039126.html

相关文章

02 qt基本控件及信号和槽

一 QString类 功能:显示一个字符串内容 主要接口函数 构造函数: QString(const char *str)QString(const QString &other)赋值运算符重载: QString &operator=(const QString &other)功能函数: 1&

RabbitMQ启动服务报错1067解决方案

首先: 你的 Erlang正确下载安装,且配置完成环境变量,可在命令行键入erl,若显示erlang版本则说明环境变量配置成功。如下: 原因分析: 1. 电脑名称为中文 2. erlang和rabbitmq版本不匹配 3. 安装目录有空格…

Android漏洞之战——整体加壳原理和脱壳技巧详解

一、前言 为了帮助更加方便的进行漏洞挖掘工作,前面我们通过了几篇文章详解的给大家介绍了动态调试技术、过反调试技术、Hook技术、过反Hook技术、抓包技术等,掌握了这些可以很方便的开展App漏洞挖掘工作,而最后我们还需要掌握一定的脱壳技巧…

Mysql整理一 基础知识/常见面试题

一、基础概念 1. 索引 之前的文章已经写过了,比较细 数据库索引含义,类别,用法,创建方式_表结构加树形id和索引是为什么_马丁•路德•王的博客-CSDN博客 简单概括就是在表的某个列或者多个列或者联合表的时候加个索引,类似图书馆书本的索引编号&…

QT中的按钮控件Buttons介绍

目录 Buttons 按钮控件 1、常用属性介绍 2、按钮介绍 2.1QPushButton 普通按钮 2.2QtoolButton 工具按钮 2.3Radio Button单选按钮 2.4CheckButton复选按钮 2.5Commam Link Button命令链接按钮 2.6Dialog Button Box命令链接按钮 Buttons 按钮控件 在Qt里,…

docker 安装mysql8.0

1、拉取镜像 docker pull mysql2、运行镜像 docker run -d --restartalways --name mysql --privilegedtrue -p 3306:3306 -v /home/sunyuhua/docker/mysql/data:/var/lib/mysql -v /home/sunyuhua/docker/mysql/conf:/etc/mysql/conf.d -v /home/sunyuhua/docker/mysql/logs…

Dart 入门Hello world

1、下载Dart sdk IntelliJ & Android Studio | Dart 2、安装Dart 插件 3、安装后重启IDEA,创建Dart项目 4、创建dart文件 5、编写函数: void main() {print("Hello world"); } 6、运行: 官网学习:Dart 语言开发文…

PHP-MD5注入

0x00 前言 有些零散的知识未曾关注过,偶然捡起反而更加欢喜。 0x01 md5 注入绕过 md5函数有两个参数,第一个参数是要进行md5的值,第二个值默认为false,如果为true则返回16位原始二进制格式的字符串。意思就是会将md5后的结果当…