Bash字符串处理(与Java对照) - 12.字符串连接

本文对比了Bash和Java中的字符串连接方法。在Bash中,可以通过简单地将字符串变量串联来实现连接;而在Java中,则可以使用`String.concat`方法或`StringBuilder`类进行高效连接。此外,还介绍了如何在Bash中使用+=操作符更新环境变量。

Bash字符串处理(与Java对照) - 12.字符串连接

In Java

String.concat

String     concat(String str)
          将指定字符串联到此字符串的结尾。

 

String newStr = str.concat(str2);

 

StringBuilder.append & StringBuffer.append

推荐使用StringBuilder,而不是StringBuffer。

 

StringBuilder sb = new StringBuilder();

sb.append("some string").append('c').append(someValue);

String s = sb.toString();

 

In Bash

将多个字符串变量或者常量合并,在Bash中采用插值的方式

S="$S1$S2"

S="${S1}${S2}"

S="STRING IS $(S1}"

 

[root@jfht ~]# S1=Hello
[root@jfht ~]# S2=World
[root@jfht ~]# S=$S1$S2
[root@jfht ~]# echo $S
HelloWorld
[root@jfht ~]# S="$S1 $S2"
[root@jfht ~]# echo $S
Hello World

 

典型应用:在外部命令搜索路径PATH中增加新项

PATH=$PATH:$NEWDIR

 

[root@jfht ~]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/apache/apache-ant-1.7.1/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@jfht ~]# PATH="$PATH:/usr/games"
[root@jfht ~]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/apache/apache-ant-1.7.1/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/games
[root@jfht ~]#

 

在Bash3.1版本及以上,支持+=操作

[root@jfht ~]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/apache/apache-ant-1.7.1/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@jfht ~]# PATH+=":~/bin"
[root@jfht ~]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/apache/apache-ant-1.7.1/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:~/bin
[root@jfht ~]#

 

 

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

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

上节内容:Bash字符串处理(与Java对照) - 11.比较两个字符串大小(字典顺序、数值比较)

下节内容:Bash字符串处理(与Java对照) - 13.字符串数组连接(以指定分隔符合并)

 

"C:\Program Files\Java\jdk-18.0.2.1\bin\java.exe" -XX:TieredStopAtLevel=1 -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true "-Dmanagement.endpoints.jmx.exposure.include=*" "-javaagent:E:\IDEA\idea\IntelliJ IDEA 2023.3.2\lib\idea_rt.jar=8773:E:\IDEA\idea\IntelliJ IDEA 2023.3.2\bin" -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath E:\IDEA\spring-code\springboot-mybatis\target\classes;D:\apache-maven-3.6.3\repo\com\mysql\mysql-connector-j\9.4.0\mysql-connector-j-9.4.0.jar;D:\apache-maven-3.6.3\repo\org\mybatis\spring\boot\mybatis-spring-boot-starter\3.0.0\mybatis-spring-boot-starter-3.0.0.jar;D:\apache-maven-3.6.3\repo\org\springframework\boot\spring-boot-starter\3.5.6\spring-boot-starter-3.5.6.jar;D:\apache-maven-3.6.3\repo\org\springframework\boot\spring-boot\3.5.6\spring-boot-3.5.6.jar;D:\apache-maven-3.6.3\repo\org\springframework\boot\spring-boot-autoconfigure\3.5.6\spring-boot-autoconfigure-3.5.6.jar;D:\apache-maven-3.6.3\repo\org\springframework\boot\spring-boot-starter-logging\3.5.6\spring-boot-starter-logging-3.5.6.jar;D:\apache-maven-3.6.3\repo\ch\qos\logback\logback-classic\1.5.18\logback-classic-1.5.18.jar;D:\apache-maven-3.6.3\repo\ch\qos\logback\logback-core\1.5.18\logback-core-1.5.18.jar;D:\apache-maven-3.6.3\repo\org\apache\logging\log4j\log4j-to-slf4j\2.24.3\log4j-to-slf4j-2.24.3.jar;D:\apache-maven-3.6.3\repo\org\apache\logging\log4j\log4j-api\2.24.3\log4j-api-2.24.3.jar;D:\apache-maven-3.6.3\repo\org\slf4j\jul-to-slf4j\2.0.17\jul-to-slf4j-2.0.17.jar;D:\apache-maven-3.6.3\repo\jakarta\annotation\jakarta.annotation-api\2.1.1\jakarta.annotation-api-2.1.1.jar;D:\apache-maven-3.6.3\repo\org\yaml\snakeyaml\2.4\snakeyaml-2.4.jar;D:\apache-maven-3.6.3\repo\org\springframework\boot\spring-boot-starter-jdbc\3.5.6\spring-boot-starter-jdbc-3.5.6.jar;D:\apache-maven-3.6.3\repo\com\zaxxer\HikariCP\6.3.3\HikariCP-6.3.3.jar;D:\apache-maven-3.6.3\repo\org\springframework\spring-jdbc\6.2.11\spring-jdbc-6.2.11.jar;D:\apache-maven-3.6.3\repo\org\springframework\spring-tx\6.2.11\spring-tx-6.2.11.jar;D:\apache-maven-3.6.3\repo\org\mybatis\spring\boot\mybatis-spring-boot-autoconfigure\3.0.0\mybatis-spring-boot-autoconfigure-3.0.0.jar;D:\apache-maven-3.6.3\repo\org\mybatis\mybatis\3.5.11\mybatis-3.5.11.jar;D:\apache-maven-3.6.3\repo\org\mybatis\mybatis-spring\3.0.0\mybatis-spring-3.0.0.jar;D:\apache-maven-3.6.3\repo\org\springframework\boot\spring-boot-starter-web\3.5.6\spring-boot-starter-web-3.5.6.jar;D:\apache-maven-3.6.3\repo\org\springframework\boot\spring-boot-starter-json\3.5.6\spring-boot-starter-json-3.5.6.jar;D:\apache-maven-3.6.3\repo\com\fasterxml\jackson\core\jackson-databind\2.19.2\jackson-databind-2.19.2.jar;D:\apache-maven-3.6.3\repo\com\fasterxml\jackson\core\jackson-annotations\2.19.2\jackson-annotations-2.19.2.jar;D:\apache-maven-3.6.3\repo\com\fasterxml\jackson\core\jackson-core\2.19.2\jackson-core-2.19.2.jar;D:\apache-maven-3.6.3\repo\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.19.2\jackson-datatype-jdk8-2.19.2.jar;D:\apache-maven-3.6.3\repo\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.19.2\jackson-datatype-jsr310-2.19.2.jar;D:\apache-maven-3.6.3\repo\com\fasterxml\jackson\module\jackson-module-parameter-names\2.19.2\jackson-module-parameter-names-2.19.2.jar;D:\apache-maven-3.6.3\repo\org\springframework\boot\spring-boot-starter-tomcat\3.5.6\spring-boot-starter-tomcat-3.5.6.jar;D:\apache-maven-3.6.3\repo\org\apache\tomcat\embed\tomcat-embed-core\10.1.46\tomcat-embed-core-10.1.46.jar;D:\apache-maven-3.6.3\repo\org\apache\tomcat\embed\tomcat-embed-el\10.1.46\tomcat-embed-el-10.1.46.jar;D:\apache-maven-3.6.3\repo\org\apache\tomcat\embed\tomcat-embed-websocket\10.1.46\tomcat-embed-websocket-10.1.46.jar;D:\apache-maven-3.6.3\repo\org\springframework\spring-web\6.2.11\spring-web-6.2.11.jar;D:\apache-maven-3.6.3\repo\org\springframework\spring-beans\6.2.11\spring-beans-6.2.11.jar;D:\apache-maven-3.6.3\repo\io\micrometer\micrometer-observation\1.15.4\micrometer-observation-1.15.4.jar;D:\apache-maven-3.6.3\repo\io\micrometer\micrometer-commons\1.15.4\micrometer-commons-1.15.4.jar;D:\apache-maven-3.6.3\repo\org\springframework\spring-webmvc\6.2.11\spring-webmvc-6.2.11.jar;D:\apache-maven-3.6.3\repo\org\springframework\spring-aop\6.2.11\spring-aop-6.2.11.jar;D:\apache-maven-3.6.3\repo\org\springframework\spring-context\6.2.11\spring-context-6.2.11.jar;D:\apache-maven-3.6.3\repo\org\springframework\spring-expression\6.2.11\spring-expression-6.2.11.jar;D:\apache-maven-3.6.3\repo\org\slf4j\slf4j-api\2.0.17\slf4j-api-2.0.17.jar;D:\apache-maven-3.6.3\repo\org\springframework\spring-core\6.2.11\spring-core-6.2.11.jar;D:\apache-maven-3.6.3\repo\org\springframework\spring-jcl\6.2.11\spring-jcl-6.2.11.jar com.zzy.springbootmybatis.SpringbootMybatisApplication . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v3.5.6) 2025-09-26T15:20:35.264+08:00 INFO 3432 --- [ main] c.z.s.SpringbootMybatisApplication : Starting SpringbootMybatisApplication using Java 18.0.2.1 with PID 3432 (E:\IDEA\spring-code\springboot-mybatis\target\classes started by 86166 in E:\IDEA\spring-code) 2025-09-26T15:20:35.266+08:00 INFO 3432 --- [ main] c.z.s.SpringbootMybatisApplication : No active profile set, falling back to 1 default profile: "default" 2025-09-26T15:20:35.925+08:00 WARN 3432 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'userMapper' defined in file [E:\IDEA\spring-code\springboot-mybatis\target\classes\com\zzy\springbootmybatis\mapper\UserMapper.class]: Invalid value type for attribute 'factoryBeanObjectType': java.lang.String 2025-09-26T15:20:35.931+08:00 INFO 3432 --- [ main] .s.b.a.l.ConditionEvaluationReportLogger : Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled. 2025-09-26T15:20:35.948+08:00 ERROR 3432 --- [ main] o.s.boot.SpringApplication : Application run failed org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'userMapper' defined in file [E:\IDEA\spring-code\springboot-mybatis\target\classes\com\zzy\springbootmybatis\mapper\UserMapper.class]: Invalid value type for attribute 'factoryBeanObjectType': java.lang.String at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getTypeForFactoryBean(AbstractAutowireCapableBeanFactory.java:864) ~[spring-beans-6.2.11.jar:6.2.11] at org.springframework.beans.factory.support.AbstractBeanFactory.getType(AbstractBeanFactory.java:744) ~[spring-beans-6.2.11.jar:6.2.11] at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAnnotationOnBean(DefaultListableBeanFactory.java:818) ~[spring-beans-6.2.11.jar:6.2.11] at org.springframework.boot.sql.init.dependency.AnnotationDependsOnDatabaseInitializationDetector.detect(AnnotationDependsOnDatabaseInitializationDetector.java:36) ~[spring-boot-3.5.6.jar:3.5.6] at org.springframework.boot.sql.init.dependency.DatabaseInitializationDependencyConfigurer$DependsOnDatabaseInitializationPostProcessor.detectDependsOnInitializationBeanNames(DatabaseInitializationDependencyConfigurer.java:152) ~[spring-boot-3.5.6.jar:3.5.6] at org.springframework.boot.sql.init.dependency.DatabaseInitializationDependencyConfigurer$DependsOnDatabaseInitializationPostProcessor.postProcessBeanFactory(DatabaseInitializationDependencyConfigurer.java:115) ~[spring-boot-3.5.6.jar:3.5.6] at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:363) ~[spring-context-6.2.11.jar:6.2.11] at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:197) ~[spring-context-6.2.11.jar:6.2.11] at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:791) ~[spring-context-6.2.11.jar:6.2.11] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:609) ~[spring-context-6.2.11.jar:6.2.11] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.5.6.jar:3.5.6] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:752) ~[spring-boot-3.5.6.jar:3.5.6] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439) ~[spring-boot-3.5.6.jar:3.5.6] at org.springframework.boot.SpringApplication.run(SpringApplication.java:318) ~[spring-boot-3.5.6.jar:3.5.6] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1361) ~[spring-boot-3.5.6.jar:3.5.6] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1350) ~[spring-boot-3.5.6.jar:3.5.6] at com.zzy.springbootmybatis.SpringbootMybatisApplication.main(SpringbootMybatisApplication.java:10) ~[classes/:na] 进程已结束,退出代码为 1
09-27
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值