- 浏览: 4756978 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
bzhao:
你也应该可以这样:(not tested)./rbtunnel ...
在Bash脚本中怎么关闭文件描述符? -
bzhao:
如果有A进程原代码情况下,通过如下调用,把他的子进程继承关闭则 ...
在Bash脚本中怎么关闭文件描述符? -
Master-Gao:
楼主咋没分析下源码呢?
我使用过的Linux命令之dirname - 截取给定路径的目录部分 -
jiedushi:
tail -F 就可以吧
Linux下实时跟踪log4j日志文件的bash脚本 - 增强了tail -f的功能 -
java_is_new:
新手学习了,就是不明白为一个网卡配多个ip有什么用
我使用过的Linux命令之ifconfig - 网络配置命令
Bash字符串处理(与Java对照) - 3.给(字符串)变量赋值
In Java
简单赋值情况
s = "Hello";
一次给多个变量赋值的情况
s1 = s2 = "Same";
赋值为整数(将整数转换为字符串)
int i = 1234;
s = String.valueOf(i);
或 s = "" + i;
In Bash
赋值符号(=)
赋值操作的形式为 VAR=STRING
记住:等号的两边不能有空格!
the assignment operator (no space before and after)
Caution
Do not confuse this with = and -eq, which test, rather than assign!
Note that = can be either an assignment or a test operator, depending on context.
赋值为字符串常量
不包含任何特殊字符的情形
示例:S1=Literal
示例:S1='Literal'
示例:S1="Literal"
示例:S1=$'Literal'
包含空格的情形
示例:S2=Hello\ World
示例:S2='Hello World'
示例:S2="Hello World"
示例:S2=$'Hello World'
包含单引号的情形
示例:S3=Yes,\ I\'m\ Basher
示例:无法纯粹用单引号来做到
示例:S3="Yes, I'm Basher"
示例:S3=$'Yes, I\'m Basher'
包含双引号的情形
示例:S4=It\ is\ very\ \"Stupid\".
示例:S4='It is very "Stupid".'
示例:S4="It is very \"Stupid\"."
示例:S4=$'It is very "Stupid".'
多行文本的情形
示例:S5='Hello
World'
示例:S5="Hello
World"
示例:S5=$'Hello
World'
赋值为另一个变量的值
普通变量
示例:S2=$S1
示例:S2=${S1}
位置参数
示例:S3=$1
示例:S3=${1}
赋值为命令行执行输出(命令替换)
格式:S2=`commandline`
格式:S2=$(commandline)
格式:S2="`commandline`"
格式:S2="$(commandline)"
创建一个脚本,输出Sha-Bang和Bash执行文件路径,也就是脚本的第一行。
[root@jfht ctmw]# echo '#!'$(which bash) > script.sh
[root@jfht ctmw]# cat script.sh
#!/bin/bash
[root@jfht ctmw]#
赋值为更复杂的字符串替换结果
示例:S1="Your account is ${ACCOUNT}"
示例:S2="Current Working Directory is $(pwd)"
赋值为空串
示例:S=
一次性给多个变量赋同一个值
在Java中,我们可以写 a = b = "String";
但是在Bash中,我们只能这样写 A=$B B="STRING"
示例:A=$B B=$C
先把变量C赋值给B,再把变量B赋值给A。
注意不能写成:A=B=C,而 A=B B=C 的结果完全与此不同。
赋值为文件内容
格式:CONTENT=$(cat filename)
注意:如果filename指定的文件是二进制数据文件,那么CONTENT实际的内容可能实际的不一致。
文本文件的情形
[root@jfht ~]# cat file.txt
1234
2345
4567
5678
[root@jfht ~]# ls -l file.txt
-rw-r--r-- 1 root root 20 09-07 07:48 file.txt
[root@jfht ~]# S=$(cat file.txt)
[root@jfht ~]# echo $S
1234 2345 4567 5678
[root@jfht ~]# echo "$S"
1234
2345
4567
5678
[root@jfht ~]# echo ${#S}
19
[root@jfht ~]#
上面的 ${#S} 是用来取得字符串长度的。
即使是文本文件,其长度也是不一致的,但字符串内容是一致的。
二进制文件的情形
[root@smsgw root]# ls -l /usr/bin/ac
-rwxr-xr-x 1 root root 18452 2006-01-27 /usr/bin/ac
[root@smsgw root]# S=$(cat /usr/bin/ac)
[root@smsgw root]# echo ${#S}
13516
[root@smsgw root]# S="$(cat /usr/bin/ac)"
[root@smsgw root]# echo ${#S}
13511
[root@smsgw root]#
上面的 ${#S} 是用来取得字符串长度的。
问题:为什么使用cat加载文件的内容与实际的文件内容会不同呢?
赋值为整数
由于Shell中的变量是无类型的,所有直接将整数赋值给变量即可,无需任何转换手段。
格式:STR=SOME_INTEGER
但如果将一个算式赋值给变量,不会自动计算,可以采用如下几种方式:
格式1:STR=$[EXPR]
格式2:((STR=EXPR))
格式3:let STR=EXPR
格式4:declare -i STR=EXPR
格式5:STR=`expr EXPR`
格式6:STR=$(expr EXPR)
[root@jfht ~]# STR=1234
[root@jfht ~]# echo $STR
1234
[root@jfht ~]# STR=1234+4321
[root@jfht ~]# echo $STR
1234+4321
直接将算式赋值给变量,还是算式本身,不会是计算结果。
[root@jfht ~]# STR=$[1234+4321]
[root@jfht ~]# echo $STR
5555
[root@jfht ~]# ((STR=1234+4321))
[root@jfht ~]# echo $STR
5555
[root@jfht ~]# let STR=1234+4321
[root@jfht ~]# echo $STR
5555
[root@jfht ~]# declare -i STR=1234+4321
[root@jfht ~]# echo $STR
5555
[root@jfht ~]# STR=`expr 1234+4321`
[root@jfht ~]# echo $STR
5555
[root@jfht ~]# STR=$(expr 1234+4321)
[root@jfht ~]# echo $STR
5555
[root@jfht ~]#
本文链接:http://codingstandards.iteye.com/blog/1167238 (转载请注明出处)
返回目录:Java程序员的Bash实用指南系列之字符串处理(目录)
上节内容:Bash字符串处理(与Java对照) - 2.字符串的表示方式(字符串常量)
下节内容:Bash字符串处理(与Java对照) - 4.字符串输出
发表评论
-
Bash字符串处理(与Java对照) - 22.判断字符串是否数字串
2011-10-25 09:25 5522Bash字符串处理(与Java对照) - 22.判断字符串是否 ... -
Bash字符串处理(与Java对照) - 21.字符串正则匹配
2011-10-24 09:07 11099Bash字符串处理(与Java对照) - 21.字符串正则匹配 ... -
Bash字符串处理(与Java对照) - 20.查找子串的位置
2011-10-19 09:14 6856Bash字符串处理(与Java对照) - 20.查找子串的位置 ... -
Bash字符串处理(与Java对照) - 19.查找字符的位置
2011-10-18 09:06 5957Bash字符串处理(与Java对照) - 19.查找字符的位置 ... -
Bash字符串处理(与Java对照) - 18.格式化字符串
2011-10-17 09:18 5034Bash字符串处理(与Java对照) - 18.格式化字符串 ... -
Bash字符串处理(与Java对照) - 17.判断是否以另外的字符串结尾
2011-10-09 08:58 7020Bash字符串处理(与Java对照) - 17.判断是否以另外 ... -
Bash字符串处理(与Java对照) - 16.判断是否以另外的字符串开头
2011-10-08 09:17 8435Bash字符串处理(与Java对照) - 16.判断是否以另外 ... -
Bash字符串处理(与Java对照) - 15.计算子串出现的次数
2011-09-28 09:37 3439Bash字符串处理(与Java对照) - 15.计算子串出现的 ... -
Bash字符串处理(与Java对照) - 14.判断是否包含另外的字符串(多达6种方法)
2011-09-27 13:22 8379Bash字符串处理(与Java对照) - 14.判断是否包含另 ... -
Bash字符串处理(与Java对照) - 13.字符串数组连接(以指定分隔符合并)
2011-09-26 09:19 5232Bash字符串处理(与Java对照) - 13.字符串数组连接 ... -
Bash字符串处理(与Java对照) - 12.字符串连接
2011-09-23 09:08 6379Bash字符串处理(与Java对照) - 12.字符串连接 ... -
Bash字符串处理(与Java对照) - 11.比较两个字符串大小(字典顺序、数值比较)
2011-09-21 09:31 5741Bash字符串处理(与Java对照) - 11.比较两个字符串 ... -
Bash字符串处理(与Java对照) - 10.判断两个字符串是否相等(不等)
2011-09-20 09:16 6954Bash字符串处理(与Java对照) - 10.判断两个字符串 ... -
Bash字符串处理(与Java对照) - 9.获取字符串指定位置的字符、遍历字符串中的字符
2011-09-19 09:13 3760Bash字符串处理(与Java对照) - 9.获取字符串指定位 ... -
Bash字符串处理(与Java对照) - 8.计算字符串长度
2011-09-16 09:20 5702Bash字符串处理(与Java对照) - 8.计算字符串长度 ... -
Bash字符串处理(与Java对照) - 7.字符串与默认值
2011-09-15 09:20 3996Bash字符串处理(与Java对照) - 7.字符串与默认值 ... -
Bash字符串处理(与Java对照) - 6.判断字符串是否为空(不为空)
2011-09-14 09:20 7258Bash字符串处理(与Java对照) - 6.判断字符串是否为 ... -
Bash字符串处理(与Java对照) - 5.字符串输入(读取字符串)
2011-09-13 09:28 3977Bash字符串处理(与Java对照) - 5.字符串输入(读取 ... -
Bash字符串处理(与Java对照) - 4.字符串输出
2011-09-08 09:30 3784Bash字符串处理(与Java对照) - 4.字符串输出 I ... -
Bash字符串处理(与Java对照) - 2.字符串的表示方式(字符串常量)
2011-09-06 09:18 6185Bash字符串处理(与Java ...
相关推荐
4.2. 变量赋值 4.3. Bash 变量是不分类型的 4.4. 特殊的变量类型 5. 引用(翻译的可能有问题,特指引号) 5.1. 引用变量 5.2. 转义(\) 6. 退出和退出状态 7. Tests 7.1. Test 结构 7.2. 文件测试操作 7.3. 其他比较操作...
在BASH中,字符串可以被赋值给变量,常见的赋值方式有两种: 1. 直接赋值:`str="Hello, World!"` 2. 使用双引号:`str="Hello, $name"`,双引号允许变量$name在字符串中展开。 二、字符串长度 要获取字符串的...
变量赋值 4.3. Bash变量是不分类型的 4.4. 特殊的变量类型 5. 引用(翻译的可能有问题,特指引号) 5.1. 引用变量 5.2. 转义(\) 6. 退出和退出状态 7. Tests 7.1. Test结构 7.2. 文件测试操作 7.3. 其他...
- **字符串变量(String Variables)**: 用于存储文本信息。 - **整数变量(Integer Variables)**: 用于存储整数值。 - **常数变量(Constant Variables)**: 定义后其值不可改变。 - **数组变量(Array Variables...
在Bash中,可以使用等号`=`为变量赋值,例如`VAR=value`。此外,了解如何处理脚本参数也是重要的,`$0`表示脚本本身,`$1`至`$9`代表传递给脚本的前九个参数。 **6. 函数与别名** Bash函数可以封装一组命令,提高...
在Bash脚本中,可以使用多种方法对字符串进行处理,包括拼接、分割、替换等。 ##### 3.1 字符串拼接 可以通过简单地将字符串放在一起实现拼接: ```bash str1="hello" str2="world" echo "$str1 $str2" ``` #####...
- **变量声明与赋值**: 变量名前无需类型声明,如`VAR="value"`。 - **命令行参数**: `$0`代表脚本本身,`$1, $2, ...`表示传递的参数。 - **控制流程**: 包括条件语句(`if`, `else`, `elif`)和循环结构(`for`...
1. **变量赋值**:在shell中,我们可以通过`var="string"`来定义一个字符串变量。 2. **引用**:双引号(`"`)内的变量会被解析,单引号(`'`)内的变量则不会。例如,`echo "$name"`会打印变量的值,而`echo '$name'`会...
例如,如果你尝试将一个字符串赋值给预期为整数的参数,mypy会在编译时报告错误,而不是等到程序运行时才发现问题。 **安装与使用** 要使用`mypy_boto3_appintegrations`,首先需要确保你已经安装了mypy和Boto3。...
`pure_eval`库的核心API是`safe_eval`函数,它接收一个字符串表达式作为输入,然后返回表达式的结果。例如,你可以用它来安全地计算数学表达式: ```python from pure_eval import safe_eval expression = "2 + 2 ...
]]`或`test`命令用于测试表达式的真伪,例如检查文件是否存在,或比较两个字符串。 ### 四、Bash高级特性 1. **命令别名**:通过`alias`命令定义简短的命令替代长命令,如`alias ll='ls -l'`。 2. **环境变量**:...
本文档详细介绍了Bash字符串操作中的参数扩展功能,该功能允许用户根据变量的值或是否存在来动态地替换变量值。参数扩展是Bash编程中常用的技术之一,尤其适用于编写脚本时变量处理。以下是根据文档内容总结的各个...
这段内联汇编将立即数0赋值给变量`result`,并确保内存屏障以防止乱序执行。 总结来说,"gcc-asm.rar_汇编语言 linux"所涵盖的内容可能是关于如何使用GCC在Linux环境中进行汇编语言编程的教程,包括编写、编译、...
- **命令替换**:使用反引号或$(...)语法,将命令的输出结果赋值给变量。 - **算术扩展**:用于简单的数学计算。 - **进程替换**:用于创建命名管道。 - **单词分割**:用于处理由空白字符分隔的单词。 - **文件名...
Shell提供了多种方式来处理字符串值,包括判断变量是否存在、获取默认值等。这些操作通常用于确保脚本在面对不同输入时能够稳定运行。 **1. 变量值的基本获取** - **${var}**: 获取变量`var`的值,与`$var`相同。 ...
如果发现类型不匹配,如将字符串赋值给预期为整数的变量,`pytype`会报告错误。 **优势与应用场景** 1. **错误检测**:`pytype`在开发阶段就能发现类型错误,避免了因类型问题导致的运行时错误。 2. **代码规范**...
2. **字符串处理**:Bash中的字符串可以用单引号或双引号包围。单引号内的内容会原样输出,不支持变量解析,而双引号内则可以包含变量并支持转义字符。 3. **参数传递**:Bash脚本可以接收参数,参数按顺序编号,从...
- **变量赋值**:使用 `variable_name=value` 的形式赋值,注意等号两边不能有空格。 - **变量引用**:通过 `$variable_name` 引用变量。 - **变量类型识别**:根据赋值内容自动识别变量类型(字符串或数字)。 ...
6. **正则表达式**:Bash支持正则表达式,用于模式匹配和字符串操作,这对于文本处理和数据过滤至关重要。 **ABS_Guide_cn.zip包含的中文手册和示例,为中文读者提供了方便,使得理解Bash脚本编程更加容易。同时,...