shell编程之变量学习小结

2023-05-16

在Bash中,变量的默认类型都是字符串型
变量的分类
1、用户自定义变量:变量可以自定义,但是对系统生效的环境变量名和变量作用是固定的。

2、环境变量:这种变量中主要保存的是和系统操作环境相关的数据。
3、位置参数变量:这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义, 变量的作用是固定的

4、预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的。

用户自定义变量   变量名=变量值     #  =号两边不能有空格
x=5
name="jie cao"

echo $变量名
ex: echo $x       #shell在变量定义的时候不用$符号但是在调用变量的时候需要用$符号
     echo $name

变量的叠加
x=123
a=123 定义变量

b="$a"456

c=${a}789      #都是在变量a下追加

set a 变量查看 注意不要带 $

set -u 调用没申明变量时的报错显示

unset 变量名 注意不带 $ ,删除变量
set 查询系统中的所有环境变量

set -u 查询未定义变量时报错。

环境变量

1.环境变量与用户自定义变量的区别
     环境变量是全局变量
     用户自定义变量是局部变量。
     用户自定义变量只在当前的 shell 中生效,环境变量在当前shell和这个shell的所有子shell中生效。
     用户可以自定义环境变量,但对系统生效的环境变量名和变量作用是固定的。

2.用户自定义环境变量
export 变量名=变量值
 或
变量名=变量值
export 变量名

3.查看环境变量
set 查看所有变量
env 查看环境变量

4.删除环境变量
unset 环境变量名

5.常用的环境变量
HOSTNAME:主机名
SHELL:当前的 shell
 TERM:终端环境
HISTSIZE:历史命令条数
SSH_CLIENT:当前操作环境是用 ssh 连接的,这里记录客户端 ip
SSH_TTY:ssh 连接的终端是 pts/1
USER:当前登录的用户
PATH:系统搜索命令的路径
要想直接通过脚本名执行自己的脚本: 
(1)将脚本拷贝至 PATH 中的任意目录下(不建议这样做),例如:
$ cp hello.sh /bin/ 

 (2)将脚本所在目录添加到 PATH 变量中,例如:
$ PATH="$PATH":/root/sh 但系统重启后失效

当前语系变量
locale
#查询当前系统语系
LANG:定义系统主题语系的变量
LC_ALL:定义整体语系的变量
echo $LANG   #查看系统当前语系
locale -a|more  #查看linux支持的所有语系

$n :n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数需要用大括号包含,如${10}
$*:这个变量代表命令行中所有的参数,$* 把所有的参数看成一个整体。
$@:这个变量也代表命令行中所有的参数,不过 $@ 把每个参数区分对待。
$#:这个变量代表命令行中所有参数的个数。


#!/bin/bash
num1=$1
num2=$2
sum=$(($num1 + $num2))  #$((----)) 双小括号内的变量会自动进行数值运算,运算符两边要有空格。
echo $sum

$*  :将输入的所有变量看成一个整体
$@  :将每个变量分开来看

在for循环里使用 $@和$*必须使用双引号括起来。

$*与$@的区别
#!/bin/bash
for i in "$*"                   #$*中的所有参数看成是一个整体,所以这个for循环只会循环一次
    do
        echo "The paramter is:$i"
    done
for y in "$@"                #$@中的每个参数都看成独立的,所以$@中有几个参数,就会循环几次
    do
        echo "The paramter is:$y"
    done

"$*"与"$@"在for循环中必须要用双引号括起来


!/bin/ksh
echo "hello world"
for i in "$*"
        do
                echo "$i"
        done
for y in "$@"
        do
                echo "The paramter is:$y"
        done
echo " $#"

-> ./canshu1 11 22 2 33
./canshu1[1]: !/bin/ksh: not found [No such file or directory]
hello world
11 22 2 33
The paramter is:11
The paramter is:22
The paramter is:2
The paramter is:33
 4

预定义变量:
echo $?   上条命令是否正确执行。返回值为0,则上一条命令正确;非0则不正确。

$$ 显示当前进程的进程号

$! 后台运行的最后一个进程的进程号。

read 运行程序后输入。可以输入提示信息。向脚本当中传递用户需要的值

-p “提示信息”   输入前显示提示信息
-t  “秒数”  等待时间
-s   隐藏输入数据
-n 字符数:只接受指定的字符数。

#!/bin/bash
read -p "please input your name:" -t 30 name #-t  “秒数”  等待时间
echo $name

read -p "please input your passwd:" -s passwd  #-s 隐藏输入数据
echo -e "\n"
echo $passwd

read -p "please input your sex[M/F]:" -n 1 sex #-n 字符数:只接受指定的1个字符数。
echo -e "\n"
echo $sex

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

shell编程之变量学习小结 的相关文章

  • c语言之指向字符串的指针学习笔记

    一 指向字符串的指针 1 xff1a 什么是字符串 xff1f 用双引号括起来的0个或多个字符 34 123 34 2 xff1a 字符串的结束符号 39 0 39 39 0 39 它是一个字符 xff0c 不是一个字符串 3 xff1a
  • 指向函数的指针与指针数组学习笔记

    指向函数的指针 1 char p 指向字符串的指针 2 int p 指向整型变量的指针 3 int a 4 61 1 2 3 4 p 61 a 指向一维数组的指针 4 int a 3 4 61 p 4 61 a 指向二维数组的指针 5 指针
  • makefile

    目录 一 Makefile简介 1 make解决的问题 xff1a 1 大量代码的关系维护 2 减少重复编译时间 二 Makefile文件命名规则 三 Makefile语法规则 1 Makefile基本规则三要素 xff1a 1 xff09
  • c语言之宏学习笔记

    宏 宏 什么是宏 xff1f 1 用一个字符串表示有意义的常量或常量表达式被称为宏 2 使用宏可以增加程序的灵活性 3 宏为了区分变量一般用大写字母 xff0c 也可以用小写字母 4 宏不是语句 xff0c 所以在定义宏的时候不要加分号 x
  • 一道有趣的数学题

    爱因斯坦曾出过这样一道有趣的数学题 xff1a 有一个长阶梯 xff0c 若每步上2 阶 xff0c 最后剩1阶 xff1b 若每步上3阶 xff0c 最后剩2阶 xff1b 若每步上5阶 xff0c 最后剩4阶 xff1b 若每步上6阶
  • c语言之文件学习

    文件是相关信息的集合 文字信息 声音信息 图形信息 文件的取名 xff1a 主文件名 扩展名 文件的分类 xff1a xff08 c 程序中 xff09 A xff1a 文本文件 B xff1a 二进制文件 xff08 data xff09
  • 翻转c风格的字符串

    这里的字符串是c风格的字符串 以 39 0 39 结尾 include lt stdio h gt using namespace std void reverse string 01 char void reverse string 02
  • 交换两个字符串

    swap char p1 char p2 char p p 61 p1 p1 61 p2 p2 61 p void main char str1 61 34 12345 34 char str2 61 34 ABCDEFG 34 char
  • 翻转句子中单词的顺序

    include 34 stdafx h 34 include 34 iostream 34 include lt windows h gt include lt stdlib h gt include lt stdio h gt using
  • 常用的vi/vim命令

    转载自 xff1a https blog csdn net wang907553141 article details 78846784 常用的vi vim命令 xff1a vi命令 xff1a yy xff1a 复制 光标所在的这一行 n
  • sql中limit使用方法

    sql中limit使用方法 此处以mysql为例 xff0c 但是我相信物以变通在oracle上也一定适用 1 下面是几种limit的方法 xff1a 原则看看下面几个例子应该就懂了 在数据库中很多地方都会用到 xff0c 比如当你数据库查
  • 数据库sql的优化问题的面试题

    想一下这个道面试题怎么做 有一张user表有1000万条数据 xff0c 请为下面的sql提供优化建议 xff1f 字段分别为 xff1a 主键id xff0c 用户id xff0c 姓名 xff0c 性别 select from user
  • 日期加一天的函数

    bool isLeapYear int year if year 4 61 61 0 amp amp year 100 61 0 year 400 61 61 0 判断闰年 return true return false void add
  • SpringAOP简单案例

    简介 本文是一个老师在学校给学生上课的简单案例 xff0c 介绍了AOP的五个通知的使用 xff0c 以及通知的执行顺序 通过自定义注解来充当切入点 xff0c 获取注解的类型分别对不同的老师做对应的业务处理 代码中的消息响应体 xff08
  • 学习 shell脚本之前的基础知识

    转载自http www 92csz com study linux 12 htm 日常的linux系统管理工作中必不可少的就是shell脚本 xff0c 如果不会写shell脚本 xff0c 那么你就不算一个合格的管理员 目前很多单位在招聘
  • Linux入门教程

    http www 92csz com study linux 发现这个写的不错 xff0c 作为小白入门非常棒 xff01
  • c与c++的区别

    相同 xff1a C 43 43 是在C语言的基础上改进的 xff0c C语言的很多语法在 C 43 43 中依然广泛使用 xff0c 例如 xff1a C 43 43 仍然使用 char short int long float doub
  • 多线程--线程管理

    说到多线程编程 xff0c 那么就不得不提并行和并发 xff0c 多线程是实现并发 xff08 并行 xff09 的一种手段 并行是指两个或多个独立的操作同时进行 注意这里是同时进行 xff0c 区别于并发 xff0c 在一个时间段内执行多
  • 选择排序和冒泡排序

    void select sort int a int n 选择排序 选择排序 xff0c 每次选择最小的放在第一个位置 xff0c 然后下次从第二个位置开始 for i 61 0 i lt n 1 43 43 i j 61 i 给下标放在一
  • 数据库面试题

    1 数据库系统的核心是 A 数据模型B 数据库管理系统C 软件工具D 数据库 2 下列叙述中正确的是 A 数据库是一个独立的系统 xff0c 不需要操作系统的支持 B 数据库设计是指设计数据库管理系统 C 数据库技术的根本目标是要解决数据共

随机推荐

  • 什么是shell?

    操作系统与外部最主要的接口就叫做shell shell是操作系统最外面的一层 shell管理你与操作系统之间的交互 等待你输入 xff0c 向操作系统解释你的输入 xff0c 并且处理各种各样的操作系统的输出结果 shell提供了你与操作系
  • 《心流》——每天十分钟,解读完本书

    心流 每天十分钟 xff0c 解读完本书 你好 xff01 这里是 每天十分钟 xff0c 解读完本书 xff0c 我是财哥哥 xff0c 今天为你解读的是 心流 xff0c 作者是米哈里 契克森米哈赖 他是积极心理体验这一领域的权威学者
  • SourceInsight4.0的使用

    转自 xff1a https blog csdn net qq 39660930 article details 77499455 一 项目管理 1 新建一个项目 快捷键Alt 43 Shift 43 N可以打开新建项目对话框 xff0c
  • 输入一个英文句子,翻转句子中的单词,要求单词内的字符顺序不变。 如:I am a student. 转换成 student. a am I

    输入一个英文句子 xff0c 翻转句子中的单词 xff0c 要求单词内的字符顺序不变 如 xff1a I am a student 转换成 student a am I 算法分析 xff1a 1 通过ReverseString xff08
  • OpenMLDB开源社区贡献者体系今日发布

    关于OpenMLDB OpenMLDB 是一个开源机器学习数据库 xff0c 提供企业级 FeatureOps 全栈解决方案 OpenMLDB 致力于闭环解决 AI 工程化落地的数据治理难题 xff0c 并且已经在上百个企业级人工智能场景中
  • 排序算法

    影响排序算法性能的几个要素 xff1a 1 时间性能 2 辅助空间 3 算法的复杂性 直接插入排序算法的基本操作是将一个记录插入到已经排好序的有序表中 xff0c 从而得到一个新的 xff0c 记录数增加一的有序表 void InsertS
  • c语言常用小知识点总结1

    define 用来定义宏常量 格式 xff1a define 标识符 大写字母 常量 define PI 3 14 注意后面是不加 分号的 常用字母的ASCII码 39 a 39 61 97 39 A 39 61 65 39 0 39 61
  • 数据结构学习笔记1

    程序设计 61 数据结构 43 算法 谈谈算法 数据结构与算法是 好基友 xff0c 如果单独谈数据结构 xff0c 或者单独谈算法是没什么意义的 来一个牛叉的算法吧 xff01 计算1 43 2 43 3 43 4 43 100 xff0
  • Oracle面试题附带答案

    1 你要对操纵Oracle数据库中的数据 下列哪个选项表示Oracle中select语句的功能 xff0c 并且不需要使用子查询 xff08 C xff09 A xff0e 可以用select语句改变Oracle中的数据 B xff0e 可
  • C结构体中数据的内存对齐问题

    转自 xff1a http www cnblogs com qwcbeyond archive 2012 05 08 2490897 html 32位机一般默认4字节对齐 xff08 32位机机器字长4字节 xff09 xff0c 64位机
  • 解决codeblocks无法调试的问题

    错误提示 xff1a ERROR You need to specify a debugger program in the debuggers 39 s settings For MinGW compilers it 39 s 39 gd
  • 求出现在字符串1而没有出现在字符串2中的字符

    编写一个函数 xff0c 它的功能是将未在字符串s中出现 xff0c 而在字符串t中出现的字符 xff0c 型参一个新的字符串放在u中 xff0c u中的字符按原字符的顺序排列 xff0c 但要去掉重复字符 至少会想到去考察t xff0c
  • 什么情况下需要建立索引? 索引的作用?为什么能够提高查询速度?(索引的原理) 索引有什么副作用吗?

    https www cnblogs com Berryxiong p 6249427 html 为什么能够提高查询速度 xff1f 索引就是通过事先排好序 xff0c 从而在查找时可以应用二分查找等高效率的算法 一般的顺序查找 xff0c
  • 100w测试数据,为什么加了索引查询反而变慢了?

    建表 xff1a create table tb test fval varchar 50 插入测试数据 xff1a DELIMITER CREATE DEFINER 61 96 root 96 64 96 localhost 96 PRO
  • linux环境下使用gdb调试c和c++ 学习笔记

    第二十三课 xff1a GDB简介 哔哩哔哩 bilibili gdb调试 xff1a 1 gcc a c b c c c o app g g 编译器会保留函数名和变量名 2 启动gdb gdb 可执行程序的名字 xff08 gdb app
  • ubuntu下eth0网卡信息不见了

    ubuntu终端下命令ifconfig的问题解决 问题一 ifconfig之后只显示lo 没有看到eth0 问题二 ifconfig之后显示eth0 xff0c 但是没有显示静态IP地址 xff0c 即无inet 地址 广播 掩码 问题三
  • 计算机指令

    指令系统的设计原则包括 xff1a 完备性 xff1a 该有的都要有 有效性 xff1a 简洁 加速常用操作 没有歧义 规整性 xff1a 对称 均匀 一致 xff08 简单源于规整 xff09 兼容性 xff1a 之前 之后的都能用 下面
  • shell基础学习笔记1

    shell是什么 xff1f shell是一个命令解释器 xff0c 他为用户提供了一个向linux内核发送请求以便运行程序的界面系统级程序 xff0c 用户可以用shell来启动 挂起 停止甚至编写一些程序 其实就是输入命令的那个交互界面
  • linux达人养成学习笔记1

    2 4 分区之分区设备文件名与挂载 1 swap分区 xff0c 没有挂载点 xff0c 是文件系统类型 xff08 交换分区 xff0c 电脑内存 lt 4G xff0c 可分为内存2倍 xff1b gt 4G分同等大小 xff09 2
  • shell编程之变量学习小结

    在Bash中 xff0c 变量的默认类型都是字符串型 变量的分类 1 用户自定义变量 xff1a 变量可以自定义 xff0c 但是对系统生效的环境变量名和变量作用是固定的 2 环境变量 xff1a 这种变量中主要保存的是和系统操作环境相关的