Bash字符串处理(与Java对照) - 1.(字符串)变量声明

Bash字符串处理(与Java对照) - 1.(字符串)变量声明

In Java

Java中变量名称的规则

Java变量名称是区分大小写的。变量名称是一个合法的标识符,没有长度限制,由Unicode字符、数字、美元符、下划线组成,不能是关键字和保留字。最好是字母开头,跟上字母或数字,采用Camel命名规则。

The Java Tutorials (http://download.oracle.com/javase/tutorial/java/nutsandbolts/variables.html) 写道
Variable names are case-sensitive. A variable's name can be any legal identifier — an unlimited-length sequence of Unicode letters and digits, beginning with a letter, the dollar sign "$", or the underscore character "_".The convention, however, is to always begin your variable names with a letter, not "$" or "_".
 

Java变量的类型

实例变量 Instance Variables (Non-Static Fields)
类变量 Class Variables (Static Fields)
局部变量 Local Variables
参数 Parameters

 

在Java中定义字符串变量

String s1;

String s2 = "1243";

String s3 = s1 + s2;

 

static final String BASH = "BASH";

 

In Bash

变量名称

Shell变量名称,只能包括字母、数字和下划线,并且只能以字母和下划线开头。通常情况下,Shell变量名称为大写的形式。(PS:找遍了 info bash、man bash、Advanced Bash-Scripting Guide等都没有找到关于Shell变量名称的规则说明,最后只能求助于互联网了。)

Unix - Using Shell Variables (http://www.tutorialspoint.com/unix/unix-using-variables.htm) 写道
Variable Names:
The name of a variable can contain only letters ( a to z or A to Z), numbers ( 0 to 9) or the underscore character ( _).
By convention, Unix Shell variables would have their names in UPPERCASE.

The following examples are valid variable names:
_ALI
TOKEN_A
VAR_1
VAR_2

Following are the examples of invalid variable names:
2_VAR
-VARIABLE
VAR1-VAR2
VAR_A!

The reason you cannot use other characters such as !,*, or - is that these characters have a special meaning for the shell.
 

声明变量并赋值

在Bash中,变量并不区分类型,因此也不需要给变量指定类型。

在Bash中声明变量不需要显式进行,给变量赋值即可

格式:VAR=STRING

格式:VAR="STRING"

格式:VAR='STRING'

VAR为变量名

STRING为字符串

要注意的是,等号(=)两侧不能有空白。

如果字符串中间有空白或特殊字符,则需要用单引号或双引号引起来(参见“Bash字符串处理(与Java对照) - 2.字符串的表示方式(字符串常量)”)。

 

[root@jfht ~]# STR=hello

[root@jfht ~]# STR=hello\ world
[root@jfht ~]# STR="hello world"
[root@jfht ~]# STR='hello world'

 

引用变量(访问变量)

如果要得到VAR变量的值,就需要引用变量,有如下两种格式:

格式:$VAR

格式:${VAR}

 

Unix - Using Shell Variables (http://www.tutorialspoint.com/unix/unix-using-variables.htm) 写道
Accessing Values:
To access the value stored in a variable, prefix its name with the dollar sign ( $):

 

要注意的是,在给变量赋值时,变量名不能加上$。

格式:VAR=STRING    而不是 $VAR=STRING

 

使用declare命令来声明变量

在Bash中有一个declare指令,也可以定义变量,效果与VAR=STRING相同

格式:declare VAR=STRING

 

[root@jfht ~]# declare STR=dummy
[root@jfht ~]# echo $STR
dummy

 

声明变量但不设置初始值

格式:VAR=

等号右侧不写任何字符,即设置变量VAR为空。

 

[root@jfht ~]# VAR=
[root@jfht ~]# echo "$VAR"

[root@jfht ~]#

 

 

格式:declare VAR

使用declare声明变量,如果变量原来声明过,则其值不变,即没有复位变量的功能。

 

[root@jfht ~]# VAR=STRING
[root@jfht ~]# echo "$VAR"
STRING
[root@jfht ~]# declare VAR
[root@jfht ~]# echo "$VAR"
STRING

 

 

格式:declare VAR=

等同于VAR=

[root@jfht ~]# VAR=STRING
[root@jfht ~]# declare VAR=
[root@jfht ~]# echo "$VAR"

[root@jfht ~]#

 

判断变量是否声明?

格式:declare -p VAR

显示VAR变量是否声明过了,如果没有打印 not found,否则显示它的属性和值。

help declare 写道
The -p option
will display the attributes and values of each NAME.
 

[root@smsgw root]# declare -p VAR
-bash: declare: VAR: not found
[root@smsgw root]# echo $?
1
[root@smsgw root]# VAR=
[root@smsgw root]# declare -p VAR
declare -- VAR=""
[root@smsgw root]# echo $?
0
[root@smsgw root]# VAR=STRING
[root@smsgw root]# declare -p VAR
declare -- VAR="STRING"
[root@smsgw root]#

 

格式:${!VAR*}

这个参数扩展格式可以找出所有以VAR开头的变量来,但不能确切的知道是否有VAR这个变量,比如有可能还有VAR1。

man bash 写道
${!prefix*}
Expands to the names of variables whose names begin with prefix,
separated by the first character of the IFS special variable.

 

[root@jfht ~]# echo ${!VAR}

[root@jfht ~]# VAR=
[root@jfht ~]# echo ${!VAR}

[root@jfht ~]# echo ${!VAR*}
VAR
[root@jfht ~]# VAR1=
[root@jfht ~]# echo ${!VAR*}
VAR VAR1
[root@jfht ~]#

 

将变量声明为只读

格式:readonly VAR=STRING

help readonly 写道
readonly: readonly [-af] [name[=value] ...] or readonly -p
The given NAMEs are marked readonly and the values of these NAMEs may
not be changed by subsequent assignment. If the -f option is given,
then functions corresponding to the NAMEs are so marked. If no
arguments are given, or if `-p' is given, a list of all readonly names
is printed. The `-a' option means to treat each NAME as
an array variable. An argument of `--' disables further option
processing.

 

格式:declare -r VAR=STRING

help declare 写道
-r to make NAMEs readonly

 

取消变量、删除变量

格式:unset VAR

 

[root@jfht ~]# VAR=STRING
[root@jfht ~]# echo "$VAR"
STRING
[root@jfht ~]# unset VAR
[root@jfht ~]# echo "$VAR"

[root@jfht ~]#

 

定义局部变量

在默认情况下,变量都是全局变量。在前面加上local或者declare之后就变成了局部变量。

格式:local VAR

格式:local VAR=STRING

格式:declare VAR

格式:declare VAR=STRING

局部变量在函数中使用,如下所示

myfunc() {

    GGG=Global

    # GGG变量是全局变量

    local STR=Hello

    # STR变量的有效范围只在myfunc函数内

    declare VAR=World

    # VAR变量也是局部变量

}

 

 

[root@smsgw root]# myfunc(){
> GGG=Global
> local STR=Hello
> declare VAR=World
> }
[root@smsgw root]# GGG=YesGlobal
[root@smsgw root]# STR=NotHello
[root@smsgw root]# VAR=NotWorld
[root@smsgw root]# myfunc
[root@smsgw root]# echo $GGG $STR $VAR
Global NotHello NotWorld
[root@smsgw root]#

 

 

本文链接:http://codingstandards.iteye.com/blog/1165533   (转载请注明出处)

返回目录:Java程序员的Bash实用指南系列之字符串处理(目录) 

下节内容:Bash字符串处理(与Java对照) - 2.字符串的表示方式(字符串常量)

 

 

Bash脚本生产级开发:从Hello World到稳定可靠的自动化神经元 Shell脚本是Linux系统中最基础、最轻量的自动化执行机制,其核心在于直接调用系统命令、无需额外运行时依赖。Bash作为主流Shell实现,通过shebang(如#!/bin/bash)触发内核级解释执行,具备确定性、可审计性和零开销优势。理解Shell与终端的区别、shebang解析机制、变量引用规范及错误处理策略(如set -euo pipefail),是构建高可靠性脚本的前提。在运维自动化、CI/CD集成、日志处理和边缘设备管理等真实场景中,一个经过严格校验的Bash脚本,往往比复杂框架更稳健、更 阅读详情

相关推荐

网络云计算-Bash Shell编程第5课-Bash变量的数据类型和表达式

在Bash脚本中,变量的数据类型并不像在一些高级编程语言(如Python、Java等)中那样严格区分。Bash中的变量主要是字符串类型,尽管在某些上下文中,Bash会尝试将字符串解释为数字以进行算术运算。请注意,Bash脚本中的变量和表达式功能相对有限,对于更复杂的任务,可能需要使用其他编程语言或工具。此外,Bash脚本的调试和错误处理也需要特别小心,因为Bash的错误消息可能不如高级编程语言那样详细和易于理解。Bash脚本中的复杂表达式通常涉及多个算术运算、字符串操作和条件测试的组合。

老韩的Linux云计算架构师进阶之路 169

Bash中的变量设定

Bash中的变量设定

qq_31361345的博客 2285

保姆级教程:用Python spatialdata框架搞定10x Xenium空间转录组数据(从下机到高级分析)

本教程详细介绍了如何使用Python spatialdata框架处理10x Xenium空间转录组数据,从数据获取到高级分析的全流程。涵盖环境配置、数据读取、质量控制、降维聚类、细胞注释及空间共定位分析等关键步骤,特别适合生物信息学研究者快速掌握Xenium数据分析技术。

weixin_30300225的博客 480

Bash 中的字符串变量

Bash 中的字符串变量

我的专栏 526

AAAI 2025杰出论文解读:神经符号推理与生物多样性计算的突破性进展

本文深度解读了AAAI 2025两篇杰出论文的突破性进展。南京大学周志华团队提出“溯因反射”框架,高效解决神经符号推理中的“不一致性”核心难题,为构建可靠、可解释的AI系统提供了新路径。斯坦福大学等机构的DiVShift研究,则系统分析了公民科学数据中的复杂分布偏移,为利用海量数据精准监测生物多样性及应对AI数据偏差提供了关键方法论。

weixin_29085865的博客 501

用户存续期价值评估(CLV) 一

用户存续期价值评估(CLV) 1 一. 定义 ​     用户存续期价值(Customer Lifetime Value),也可称为CLTV、LCV或者LTV,是企业对未来一个客户与其的关系所带来的净收益的预测。这个预测模型可以有不同水平的复杂度和精确度,从一个直观感觉到使用复杂的预测技术。CLV可以被简单理解为客户关系的价值,也就是未来由于与客户的关系所带...

weixin_43171270的博客 8024

字符串变量的定义和初始化

c++要包含一个头文件#include 第一种 string player1; player1="PG"; 第二种 string player2; player2=player1; 第三种 string player3("PG"); //在定义变量的同时,设置一个值,一般称为初始化。将player3设置为PG. 第四种 string player4("player3"); 第五种 (几乎不用) string player5(10,'A'); //等效于string player5("AAAAA

C++ER的博客 1960

解决linux 2.5G网卡驱动问题

解决linux 2.5G网卡驱动问题 关键词:2.5G网卡驱动,ubuntu,安装,2.5G Ethernet LINUX driver,Realtek网卡驱动 由于2.5G网卡较新,各linux发行版的通用驱动已不适用,新装的系统会出现无法上网问题,由于国内网络环境去Realtek官网很难下载到驱动文件,故本文提供github上的2.5G Ethernet LINUX driver r8125 for kernel up to 5.6的版本驱动文件r8125-9.003.05.tar.bz2各位可以自

poorguy_aos的博客 1万+

Shell把字符串声明成变量

文件build.properties中定义属性值: jar_out_dir=/tmp/aaa 在shell中读取: build]$ grep jar_out_dir build.properties jar_out_dir=/tmp/aaa 我希望把“jar_out_dir=/tmp/aaa”直接声明成变量供下面的程序使用。 但是当前是一个字符串,该如...

weixin_33686714的博客 1249

Ambari 安装部署教程(手把手教学)【超级详细】

本文为读者提供了一套超详细的 Apache Ambari 安装部署教程,采用手把手教学方式,适合初学者及大数据运维人员。内容涵盖前期准备、环境配置、Ambari Server 与 Agent 安装、集群初始化配置、常见问题排查等全流程操作,确保用户能够顺利搭建稳定的 Hadoop 大数据平台管理系统。

Five的博客 1万+

彻底解决tplink路由器无法访问部分https网站

彻底解决tplink无法访问部分https网站

renkai721的专栏 8762

Java程序员的Bash实用指南系列之字符串处理(目录)

Java程序员的Bash实用指南系列之字符串处理(目录) 文章   在一般的计算机编程语言中,字符串处理是很重要的一块,Bash也是如此,如果掌握了字符串的处理,基本上就能够应付大部分的编程工作了。在Unix/Linux操作系统中,很多时候需要使用多个命令一起配合才能完成一个较复杂的任务,Shell提供了管道线、重定向、结构化编程等方式,把这些命令粘合在一起。因此,命令之间的接口数据的处理

Nicholas的专栏 QQ1295794532 1139

【IxNetwork】史上最全IxNetwork测试仪使用精讲(一),图文教程超赞超详细!!!

IXIA使用的是Server-client模式,Server端在测试仪表的主机上,在开机后会随着主机内的操作系统的启动而自动启动,一般情况下不需要人为的手工启动。因此在通常不需要为主机配置专用的显示器和键盘。client端包括两个测试软件: Ixia Explorer和ScriptMate。这两个软件一般安装在测试用计算机上,在仪表自带的主机中也有这两个软件。根据测试项目的不同来选择使用不同的软件。Ixia Explorer主要提供数据流的测试,针对设备的功能进行测试;

风云说通信 2053

Java字符串替换前缀_bash 进阶之变量替换与字符串操作

摘自《高级bash脚本编程指南》变量替换处理和(或)扩展变量${parameter}与$parameter相同, 也就是变量parameter的值. 在某些上下文中, ${parameter}很少会产生混淆.可以把变量和字符串组合起来使用.1 your_id=${USER}-on-${HOSTNAME}2 echo "$your_id"3 #4 echo "Old \$PATH = $PATH"5...

weixin_32004383的博客 688

如何使用Github创建一个完全免费的个人网站

摘要: 本文详细介绍如何利用Github Pages免费搭建个人静态网站,适合零基础用户。首先需注册Github账号并创建特定命名的仓库(格式:用户名.github.io),然后通过网页或命令行创建index.html文件作为网站首页。完成后可通过"仓库设置- Pages"获取网站链接。文章还包含GitHub Desktop的安装使用、代码提交指南及常见问题自检方法,并说明即使Github被墙也可迁移至国内平台(如码云)。整个过程无需编程基础,仅需15分钟即可完成基础网站搭建。

安德洛夫 1514

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Bash编程

在Linux系统使用过程中,不可避免的要编写脚本,如进行大量重复操作,或需要根据条件自动执行某操作。本文介绍了bash脚本编写的相关内容,文末有一些示例。 文章目录一、bash脚本介绍1. shell2. bash脚本二、bash脚本基础1. 编程语言分类2. 编写代码的约定三、bash语法介绍1. 变量bash中的变量类型变量声明本地变量的声明只读变量的声明环境变量的声明局部变量的声明变量的引用...

Brahming的博客 1287

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Linux Bash杂记

在Bash中,当希望获取用户输入的内容时,可以用到【read】命令,有点类似 c++的cin 或 Java的System.in; read [-pt] variable -p: 在输入的时候给予用户提示; -t: 等待输入超时的时间 variable: 输入的内容赋值到的变量名 如: read -p "Input Your Name:" -t 30 name 变量 变量在系统中分为自定...

weixin_40932275的博客 216

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

java runnoob_Shell学习笔记1》转载自runnoob

无论是shell 还是bat,都是与操作系统结合非常紧密的东西,所以在此占坑,希望有朝一日能够把这些东西融会贯通,于是在此占坑~学习地址:http://www.runoob.com/linux/linux-shell.html以下多处内容照抄自本链接。1、HELLO WORLD (复制于原网站)Shell 编程跟 java、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解...

weixin_34154352的博客 172

Bash中的变量类型,你知道几种?

你必须非常努力,才能看起来毫不费力! 微信搜索公众号[ 漫漫Coding路 ],一起From Zero To Hero ! 前言 与 Java、Go 等编程语言类似,Bash 中也可以自定义变量,那么如何自定义变量呢?除了自定义变量之外,Bash中还有没有其他类型的变量供我们使用呢?一起来学习吧! 变量分类 在 Bash 中,变量主要分为以下四种类型: 自定义变量:类似Java、Go语言中的自定义变量,灵活性最高; 环境变量:主要保存和系统环境相关的变量,系统已经定义好了很多环境变量,同时允许用户新增.

u012948302的专栏 2176

Bash语言的内存管理

Bash(Bourne Again SHell)是一种广泛使用的命令行解释器和脚本语言。尽管Bash本身是基于进程的语言,并且与其他编程语言(如C或Java)相比,缺乏直接的内存管理机制,但它依然提供了一些方法来处理变量、数组和进程间的通信。本文将探讨Bash语言中的内存管理,重点包括变量的使用、数组的管理、脚本的执行、以及如何优化内存的使用。

2501_91186062的博客 576

Bash Shell 语法快速预览

易百Bash Shell教程 创建 shell> touch t.sh // t.sh #!/bin/bash echo "Hello, world" 运行 // linux 下直接运行。在window运行可以使用git Bash、cmder shell> ./t.sh // 提示 Permission denied 需要增加运行权限 shell> chmod +x test...

聂培志的博客 223

shell脚本学习之bash变量

bash变量的命名 变量名称可以由字母,数字和下划线组成,但是不能以数字开头。 在bash中,变量的默认类型都是字符串类型,如果要进行数值运算,则必须指定类型为数值型。 变量用等号连接值,等号左右不能有空格 变量的值如果有空格,需要使用单引号或双引号。 可以使用反引号包含命令或者$(命令)赋制给变量 name= $(date) bash变量的分类 用户自定义变量 - 只在当前的she...

sofency'Blog 385

shell 基本命令

简介: Shell是用户与内核进行交互操作的一种接口,用C语言实现,目前最流行的Shell称为bash shell Shell是一门编程语言,解释型的语言,Shell脚本就是在用linux的Shell命令来编程 一个系统可以存在多个Shell,可以通过cat /etc/shells命令查看系统中安装的Shell sh是Unix的解释器,bash是目前用的最多的,dash比bash的执行速度要快,但...

weixin_42435657的博客 246

Shell学习笔记1》转载自runnoob

无论是shell 还是bat,都是与操作系统结合非常紧密的东西,所以在此占坑,希望有朝一日能够把这些东西融会贯通,于是在此占坑~ 学习地址:http://www.runoob.com/linux/linux-shell.html 以下多处内容照抄自本链接。 1、HELLO WORLD (复制于原网站) Shell 编程跟 java、php 编程一样,只要有一个能编写代码的文本编辑器

the_fool_的博客 665
上一篇: AA制消费金额统计的Bash脚本
下一篇: Bash字符串处理(与Java对照) - 2.字符串的表示方式(字符串常量)
codingstandards
博客等级 码龄16年 12粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值