【Linux专栏】shell脚本变量的取值|转换
Linux&&Oracle相关文档,希望互相学习,
共同进步
风123456789~-CSDN博客
1.背景
复习一下linux的命令中,变量赋值、变量替换、命令中的变量赋值;批量替换字符串为指定值;判断文件是否存在;字符串转大小写后重新赋值等。
2. 基础实验
2.1 变量实验 “$var” 与 '$var'
知识点:
变量,单引号‘不会被解析。
双引号(")允许变量扩展,同时允许你直接在字符串中使用单引号
例子代码:
var="single quotes: '"
echo "$var"
echo "$var"
echo $var
echo ${var}
echo '$var'
执行截图:

在单引号字符串中,你可以使用转义字符 \' 来表示单引号:
var='single quotes: \'
echo "$var"
执行截图:

如需在变量中同时包含单引号和双引号,可以将包含单引号的部分放在双引号中,反之亦然。
var="single quotes: \' and \"double quotes: \""echo $var
执行截图:

2.2 定义变量、查看变量的值
知识点:
变量名以字母或下划线开头,区分大小写,建议全大写
变量名=变量值 ,将右边的值赋予左边
查看变量的值:echo $变量名
aaa=111
bbb=222
echo $aaa $bbb
截图:

2.3 变量的引用方式
知识点:
双引号:允许通过$符号引用其他变量值,会将变量替换为值
单引号:禁止引用其他变量值,$视为普通字符,原样输出
反撇号:命令替换,提取命令执行后的输出结果
$()括起来的命令替换:将命令的输出作为参数传递给其他命令
[root@localhost opt]# echo "$product"
python
[root@localhost opt]# echo "${product}3.3" '双引号:允许通过$符号引用其他变量值'
python3.3
[root@localhost opt]# echo ‘$product’
‘python’
[root@localhost opt]# echo '$product' '单引号禁止引用其他变量值,$视为普通字符'
$product
[root@localhost opt]# ps aux | wc -l
151
[root@localhost opt]# num=`ps aux | wc -l` '反撇号中识别命令,对命令结果进行解析'
[root@localhost opt]# echo $num
152
[root@localhost opt]# abc=$(ps aux | wc -l)
[root@localhost opt]# echo $abc
152
注意 反撇号:命令替换,提取命令执行后的输出结果 或者 $(命令执行后结果)
例子:以下统计文件夹中文件的数量,并将数量赋值给变量aaa
ls -l | grep "^-" | wc -l aaa=`ls -l | grep "^-" | wc -l` echo ${aaa}或者:bbb=$(ls -l | grep "^-" | wc -l) echo ${bbb}截图:
3.实例
3.1 批量替换文件的字符串为目标变量
如:将文本 aa_test 中字符串 014011030 替换为变量字符串
命令:
aa_test内容:query=(fm_ac_book:" WHERE BANK_CODE LIKE '014011002%' "
,fm_ac_assist:" WHERE BANK_CODE LIKE '014011002%' "
)
directory=EXTRACT_DIR
compression=ALL
tables=fm_ac_book,fm_ac_assistorgno=014011002
echo $orgno
sed -i "s/014011030/$orgno/g" aa_test
截图:

此时,将命令整体用反撇号 括起来,依然可以得到需要的结果

不加引号或反撇号 也可以执行

但是加上单引号就不可以了

3.2判断文件是否存在
判断文件是否存在[oracle@neptune extract]$ cat aa.sh
#!/bin/bashif [[ ! -e "aa.sh" ]]; thenecho "存在"elseecho "不存在"
fi
3.3 字符串转大小写
在Linux命令行中,有多种方法可以将字符串转换为大小写 ,本文主要针对 以下3种:
1)tr命令:可以在文件或者命令流中进行字符转换。
echo hello World | tr '[:lower:]' '[:upper:]' echo hello World | tr '[:upper:]' '[:lower:]'echo hello World | tr [:lower:] [:upper:] echo hello World | tr [:upper:] [:lower:]或: echo "hello world" | tr 'a-z' 'A-Z'截图:
2)使用awk命令转换大小写
echo "OraclEstring" | awk '{print toupper($0)}'echo "OraclEstring" | awk '{print tolower($0)}'
截图:

3)^方式转大写
^^2个:全部大写 ,,2个:全部小写
^ 1个:首字母大写 ,1个:首字母小写
var="fengFYing_sTRing haHAhe"echo ${var^}
echo ${var^^} echo ${var,}
echo ${var,,}
截图:

将文本中所有内容,全部转为大写:
cat a.txt | while read i; do echo ${i^^}; done
4.总结
– $变量名:用来引用变量的值。例如,$HOME表示当前用户的主目录。
– ${变量名}:与$变量名类似,但用于明确变量名的边界。特别适用于需要明确变量名边界的情况。
– $((表达式)):用于进行算术运算。例如,$((2+2))将返回4。– `命令`:将命令的输出结果作为字符串进行替换。例如,`date`将返回当前的日期。
– $(命令):与`命令`相同,但更推荐使用$(命令)的方式。– 参数替换和命令替换中的引号使用非常重要。在使用命令替换时,建议使用$()的方式,并避免使用反引号(`)。
– 在参数替换和命令替换中,可以添加额外的双引号来防止特殊字符的意外展开。
– 使用命令替换时,要注意命令的输出结果是否包含换行符等特殊字符,需要根据实际情况进行处理。
实验验证:ok 
项目管理--相关知识 ![]()
项目管理-项目绩效域1/2-CSDN博客
项目管理-项目绩效域1/2_八大绩效域和十大管理有什么联系-CSDN博客
项目管理-项目绩效域2/2_绩效域 团不策划-CSDN博客
高项-案例分析万能答案(作业分享)-CSDN博客
项目管理-计算题公式【复习】_项目管理进度计算题公式:乐观-CSDN博客
项目管理-配置管理与变更-CSDN博客
项目管理-项目管理科学基础-CSDN博客
项目管理-高级项目管理-CSDN博客
项目管理-相关知识(组织通用治理、组织通用管理、法律法规与标准规范)-CSDN博客
Oracle其他文档,希望互相学习,
共同进步
Oracle-找回误删的表数据(LogMiner 挖掘日志)_oracle日志挖掘恢复数据-CSDN博客
oracle 跟踪文件--审计日志_oracle审计日志-CSDN博客
ORA-12899报错,遇到数据表某字段长度奇怪现象:“Oracle字符型,长度50”但length查却没有50_varchar(50) oracle 超出截断-CSDN博客
EXP-00091: Exporting questionable statistics.解决方案-CSDN博客
Oracle 更换监听端口-CSDN博客




