linux shell变量的,linux shell变量解析_叶飞影的博客-程序员宅基地

技术标签: linux shell变量的  

摘要 腾兴网为您分享:linux shell变量解析,智影,智联招聘,智慧消防,音恋等软件知识,以及考拉fm电台,快快游戏,京东企业购app,pdf加密工具,高德导航3d版,电脑驱动,兰溪新闻,我爱网拍,英语趣配音版,豹米,翡翠,船运网,恋恋yy多开器,27寸桌面壁纸,摄像头检测等软件it资讯,欢迎关注腾兴网。本节内容: linux shell变量 一、linux shell 变量操作 A,变量显示、打印 语法:echo $var B,变量设置 语法:var=value 变量的设置规则: 1,变量两端不能直接接空格符 2,变量名称只能是因为...

本节内容:

linux shell变量

一、linux shell 变量操作

A,变量显示、打印

语法:echo $var

B,变量设置

语法:var=value

变量的设置规则:

1,变量两端不能直接接空格符

2,变量名称只能是因为字母与数字,但开头不能使数字

3,双引号内的特殊字符如$等,保持原本特性

复制代码 代码示例:

[[email protected] ~]# var="lang is $LANG"

[[email protected] ~]# echo %var

[email protected] ~]# echo $var

lang is zh_CN.UTF-8

1,单引号内的特殊字符则仅为一般字符

复制代码 代码示例:

[[email protected] ~]#

[[email protected] ~]# var='lang is $LANG';echo $var

lang is $LANG

2,在一串命令中,还需要通过其他命令提供的信息,可用单引号‘命令'或&(命令),举例:指令1在执行的过程中需要先知道指令2的的值,但是指令1,2在一串指令中

复制代码 代码示例:

[[email protected] ~]# uname -r

2.6.18-371.el5

[[email protected] ~]# cd /lib/modules/$(uname -r)/kernel

[[email protected] kernel]#

3,变量的累加

复制代码 代码示例:

[[email protected] kernel]# var=${var}yes

[[email protected] kernel]# echo $var

lang is $LANGyes

4,数组变量设置与读取

复制代码 代码示例:

[[email protected] ~]# array[1]=a

[[email protected] ~]# array[2]=b

[[email protected] ~]# array[3]=c

[[email protected] ~]# echo ${array[1]}

a

[[email protected] ~]# echo ${array[2]}

[[email protected] ~]# echo ${array[3]}

c

C.取消变量(unset)

语法: unset var

D.变量查看(set)

语法:set

比较重要的几个自定义变量

HISTFILE:历史记录存储位置

MAILCHECK:多少秒扫描次邮箱,查看是否有新邮件

PS1:提示符设置

$:目前这个shell的PID

?:刚才执行完命令的回传码。0为正确,非0为错误

举例:

比较重要的几个自定义变量

HISTFILE:历史记录存储位置

MAILCHECK:多少秒扫描次邮箱,查看是否有新邮件

PS1:提示符设置

$:目前这个shell的PID

?:刚才执行完命令的回传码。0为正确,非0为错误

E.变量键盘读取(read)

语法:read [-pt] var

选项与参数:

-p:后可跟提示信息

-t:后跟等待输入的描述

举例:

复制代码 代码示例:

[[email protected] ~]# read atest

this is a test

[[email protected] ~]# echo $atest

this is a test

[[email protected] ~]# read -p "please input.. " attest

please input.. hello world      =>提示信息

[[email protected] ~]# echo $atest

hello world

[[email protected] ~]# read -p "please input.. " -t 5  atest

please input..  =>5秒未输入回到命令行模式

[[email protected] ~]#

[[email protected] ~]# echo $atest

hello world

F.变量声明(declare)

语法:declare [-aixr] var

选项与参数

declare后不接任何内容,代表查询所有变量,作用和set一致

-a  :将后面名为 variable的变量定义成为数组 (array)类型

-i  :将后面名为 variable的变量定义成为整数数字 (integer)类型

-x  :用法与 export一样,就是将后面的 variable变成环境变量;

+x :将环境变量变为自定义变量

-r  :将变量配置成为 readonly类型,该变量不可被更改内容,也不能 unset(需要注销后再登陆才能变回)

举例:

复制代码 代码示例:

[[email protected] ~]# echo $sum

100+50+10 =>默认当做字符串处理

[[email protected] ~]# declare -i sum=100+50+10

[[email protected] ~]# echo $sum

160 =>声明为int 因此可以做加法

[[email protected] ~]# declare -x sum

[[email protected] ~]# export | grep sum

declare -ix sum="160" =>查询到是环境变量

[[email protected] ~]# declare +x sum

[[email protected] ~]# export | grep sum= >查询不到是环境变量

[[email protected] ~]# declare -r sum;sum=test

bash: sum: readonly variable =>只读允许修改

G.变量内容删除

语法

${var#/key}:从前往后删除符合key最短的那一个

${var##/key}:从前往后删除符合key最长的那一个

${var%/key}:从后往前删除符合key最短的那一个

${var%%/key}:从后往前删除符合key最短的那一个

举例:${var#/key}

复制代码 代码示例:

[[email protected] ~]# path=${PATH};echo $path

/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin

[[email protected] ~]# echo ${path#/*:}        =>key为*.(*为通配符)

/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin

举例:${var##/key}

复制代码 代码示例:

[[email protected] ~]# path=${PATH};echo $path

/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin

[[email protected] ~]# echo ${path##/*:}

/root/bin

H.变量内容替换

语法:

${var/旧字符串/新字符串}:替换第一个满足条件的字符串

${var//旧字符串/新字符串}:替换所有满足条件的字符串

举例:${var/旧字符串/新字符串}

复制代码 代码示例:

[[email protected] ~]# path=${PATH};echo $path

/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin

[[email protected] ~]# echo ${path/sbin/SBIN}

/usr/kerberos/SBIN:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin

举例:${var//旧字符串/新字符串}

复制代码 代码示例:

[[email protected] ~]# path=${PATH};echo $path

/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin

[[email protected] ~]# echo ${path//sbin/SBIN}

/usr/kerberos/SBIN:/usr/kerberos/bin:/usr/local/SBIN:/usr/local/bin:/SBIN:/bin:/usr/SBIN:/usr/bin:/usr/X11R6/bin:/root/bin

二、环境变量

普通变量可以理解为局部变量,环境变量可以理解为全局变量,登陆成功获得的bash shell就是一个进程,在此情况下再去打开一个新SHELL就是他的子进程,子进程是无法获取父进程的自定义变量,但是可以获取父进程的环境变量

A.环境变量导出(export )

语法:export  var

B.环境变量查看(env )

语法:env

比较重要的几个环境变量

HOME:代表用户的主文件夹

SHELL:代表目前使用的shell是哪个程序,我现在使用的是/bin/bash

HISTSIZE:历史记录最大存储条数

MAIL:mail命令系统收信时,系统会读取的信箱文件

PATH:执行文件查找路径

LANG:语系信息

RANDOM:随机数变量(0~32767)

三、提示符的设置(PS1)

变量PS1='[\[email protected]\h \W]\$ '记录了命令提示符的显示格式 [[email protected] ~]#

符号意义

\d :可显示出[星期月日]的日期格式,如:"Mon Feb 2"

\H :完整的主机名。

\h :仅取主机名在第一个小数点之前的名字

\t :显示时间,为 24小时格式的[HH:MM:SS]

\T :显示时间,为 12小时格式的[HH:MM:SS]

\A :显示时间,为 24小时格式的[HH:MM]

\@ :显示时间,为 12小时格式的[am/pm]样式

\u :目前使用者的账号名称,如[root];

\v :BASH的版本信息,如鸟哥的测试主板本为 3.2.25(1),仅取[3.2]显示

\w :完整的工作目录名称,由根目录写起的目录名称。但家目录会以 ~取代;

\W :利用 basename函数取得工作目录名称,所以仅会列出最后一个目录名。

\# :下达的第几个命令。

\$ :提示字符,如果是 root时,提示字符为 #,否则就是 $

举例:

复制代码 代码示例:

[[email protected] ~]# PS1='[\[email protected]\h\A \W \#]\$ '

[[email protected]:45 ~ 82]#

shell环境变量$IFS用法举例

shell脚本学习指南之shell变量

export为shell脚本添加指定环境变量的方法

expect中为send语句上加变量

shell特殊变量的含义

有关linux子shell变量的相关知识

awk中调用shell变量的例子

sed、awk调用shell变量的方法

awk基础知识(7)-变量

相关推荐

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30341445/article/details/116889678

智能推荐

Android Jetpack架构组件之DataBinding_Just_Paranoid的博客-程序员宅基地

DataBindinghttps://developer.android.google.cn/topic/libraries/data-bindingDataBinding的意义让布局文件承担了部分原本属于页面的工作,使页面与布局耦合度进一步降低//build配置dataBinding = true//布局生成databinding layout//导入方法:布局文件使用代码//<import type="com.dongnaoedu.databinding.star0tils

我的博客不是梦——Github Pages+Hexo搭建个人博客_BIG_JUN的博客-程序员宅基地

通知小编个人博客网站已搭建好,日后文章会同步更新。因为格式有点小差异,我会修改MD使其适于CSDN发布。若文章排布还有点小错乱的,可移步我的个人博客BigJun’s Blog。前言Github Pages是面向用户、组织和项目开放的公共静态页面搭建托管服务,站点可以被免费托管在Github 上,你可以选择使用Github Pages默认提供的域名github.io或者自定义域名来发布...

ubuntu下安装Java 1.8.0_25 jdk_lolicon480的博客-程序员宅基地

首先需要从sun的官网上下载java SE Development Kit, 文件名为jdk-8u25...      在下发现是.gz文件,所以直接用下列命令解压 tar -zxvf jdk-8u25-linux-x64.gz      解压后得到jdk1.8.0_25文件夹,把文件夹移动到/usr/local里。输入代码如下: mv ./jdk1.8.0_25 /usr

手写atoi_ChenJunAn97的博客-程序员宅基地_手写atoi

实现一下atoi函数/*库函数: atoi功能:把输入的char数组转成int型,如果输入类型不规范则为0*/int ATOI (const char *sor){ int length = strlen(sor); int l = 0, r; char Flag = 1; while(l < length && sor[l] == ' ' || sor[l] == '\t'){//跳过前置空格或者制表符 l++; }

专业语言:实现Java平台的三种方式_冥界执法者的博客-程序员宅基地

广泛地说,只要能执行 Java bytecode 者,就可以称为 Java 平台(Java platform)。大致上,实现 Java 平台的方式有三种,分别是:  Java 虚拟机器(Java Virtual Machine,JVM)  Java 操作系统(Java Operating System)  Java 芯片(Java Chip)  以下就此三种 Java 平台提出解说

PowerOJ 2543: 赛场布置_Wuliwuliii的博客-程序员宅基地

题目链接 对于每个点,它可以选择男或者女,如果要加上的贡献,那么相邻的一定得是异性才可以。所以,对相邻的,我们可以考虑成: 然后,我们对于点坐标的的奇偶性分别讨论即可。 当然,还需要考虑的贡献。 然后就是全选减去最少割去的即可。#include <iostream>#include <cstdio>#include <cmath>#include <string>#include <cstring>#in...

随便推点

linux下运行netca不能启动监听_fei20072050104的博客-程序员宅基地_linux netca打不开

在linux终端下运行netca不能启动监听,提示netca文件178行有:bin/netca:line 178: 11819 Aborted                $JRE $JRE_OPTIONS -classpath $CLASSPATH oracle.net.ca.NetCA $*

h5页面弹出弹窗时,js防止页面滚动穿透到底层页面_qq_2422941992的博客-程序员宅基地

//弹窗弹出时调用openMaskFun(){letscrollTop=document.body.scrollTop||document.documentElement.scrollTop;document.body.style.cssText+='position:fixed;width:100%;top:-'+scrollTop+'px;';},//弹窗关闭时调用closeMaskFun(){letbody=document.bod...

UML之初识_Dongle_Kevin的博客-程序员宅基地

UML的三要素及定义图的分类。

eclipse设置自动提示(每个字母都会哦~)_IT小小学生的博客-程序员宅基地

之前听说过有这种操作,不过今天才搞了一下,确实挺方便,所以特此记录一下。不过建议刚学习Java的初学者,还是慢慢手敲更好,加深理解和记忆。以上均为个人感觉,不喜勿喷,用与不用全凭自己爱好,如需自取。(不想看下面的文字可以直接看图)找到window,选择preference。找到Java --》editor --》content Assist --》Auto activation trigger...

阿里规范-MySql规约_Lucky-肥仔的博客-程序员宅基地

(一) 建表规约【强制】表达是与否概念的字段,必须使用 is_xxx 的方式命名,数据类型是 unsigned tinyint( 1表示是,0表示否),此规则同样适用于 odps 建表。说明:任何字段如果为非负数,必须是 unsigned。【强制】表名、字段名必须使用小写字母或数字;禁止出现数字开头,禁止两个下划线中间只出现数字。数据库字段名的修改代价很大,因为无法进行预发布,所以字段...