美文网首页
shell变量

shell变量

作者: 黑客不黑_ | 来源:发表于2019-06-16 16:52 被阅读0次
## 1.4.5 declare声明变量

> declare [+/-][选项] 变量名
> 
> 选项说明:
> 
> -/+:给变量设定类型属性,取消给变量设定的类型属性
> 
> -i:声明为整型
> 
> -x:声明为环境变量
> 
> -p:显示变量名和值

例如,声明一个环境变量 declare -x str ,取消该变量 declare +x str 。

1.4.6 位置变量和特殊变量

> $?:上一条代码执行的回传指令,回传0表示标准输出,即正确执行,否则为标准错误输出。
> 
> $$:当前shell的PID。除了执行bash命令和shell脚本时,$$不会继承父shell的值,其他类型的子shell都继承。
> 
> $BASHPID:当前shell的PID,这和"$$"是不同的,因为每个shell的$BASHPID是独立的。而"$$"有时候会继承父shell的值。
> 
> $!:最近一次执行的后台进程PID。
> 
> $#:统计参数的个数。
> 
> $@:所有单个参数,如"a""b""c""d"。
> 
> $*:所有参数的整体,如“abcd”。
> 
> $0:脚本名。
> 
> $1……$n:参数位置。

示例:

[root@k8s-node2 home]# sh var.sh a b c d 
$?:0
$$:21368
$!:
$#:4
$@:a b c d
$*:a b c d
$0:var.sh
$1:a
$2:b
$3:c
$4:d
[root@k8s-node2 home]# sh var.sh 
$?:0
$$:21442
$!:
$#:0
$@:
$*:
$0:var.sh
$1:
$2:
$3:
$4:
[root@k8s-node2 home]# cat var.sh 
echo '$?:'$?
echo '$$:'$$
echo '$!:'$!
echo '$#:'$#
echo '$@:'$@
echo '$*:'$*
echo '$0:'$0
echo '$1:'$1
echo '$2:'$2
echo '$3:'$3
echo '$4:'$4

1.4.9 变量的切分、提取和替换
其实是对变量实现的功能,只是使用文件名的说法比较典型,且容易理解它的用途。

例如,将文件名"Linux.docx.jpg"存放到变量file_name中,然后执行从左向右或从右向左的删除或贪婪删除。

[root@xuexi tmp]# file_name="Linux.docx.jpg"
[root@xuexi tmp]# file_name_greedy=${file_name%%.*}
[root@xuexi tmp]# file_name_nongreedy=${file_name%.*}
[root@xuexi tmp]# extention_name_greedy=${file_name##*.}
[root@xuexi tmp]# extention_name_nongreedy=${file_name#*.}

[root@xuexi tmp]# echo -e "${file_name_greedy}\n${file_name_nongreedy}\n${extention_name_greedy}\n${extention_name_nongreedy}"
Linux
Linux.docx
jpg
docx.jpg
 ${var%%.*} 和 ${var%.*} 中的 %%.* 表示从右向左匹配 .* 并删除,由于Linux.docx.jpg有两种符合条件的匹配:".jpg"和".docx.jpg",所以使用两个"%%"表示贪婪删除,即删除最长匹配".docx.jpg"。可以使用一个%表示非贪婪删除,表示删除最短的匹配即".jpg"。

 ${var##*.} 和 ${var#*.} 中的 ##*. 表示从左向右匹配 *. 并执行贪婪删除,即删除"Linux.docx.",同理 #*. 表示非贪婪删除,即删除"Linux."。

除了删除,还可以实现提取和替换的功能。
[root@xuexi tmp]# echo "${file_name:0:5}"   # 提取第0个字节后的5个字节,即1-5字节
Linux

[root@xuexi tmp]# echo "${file_name:6:4}"   # 提取第6个字节后的4个字节,即第7、8、9、10字节
docx

[root@xuexi tmp]# echo "${file_name/jpg/pdf}"   # 非贪婪替换jpg为pdf,即只替换从左向右的第一个
Linux.docx.pdf

[root@xuexi tmp]# echo "${file_name//jpg/pdf}"  # 贪婪替换jpg为pdf,即所有的jpg都替换为pdf
Linux.docx.pdf

bash环境配置文件主要有/etc/profile、~/.bash_profile、~/.bashrc、/etc/bashrc和/etc/profile.d/*.sh
image.png

来源:https://www.cnblogs.com/f-ck-need-u/p/7229381.html

相关文章

  • shell基础在工作中的应用

    shell编程基础:1. shell变量:环境变量、特殊变量、用户自定义变量2. shell输入输出3 shell...

  • Linux Shell:基础知识和Shell变量

    摘要:Linux,Shell 整理Shell内容要点: Shell基础知识 Shell变量的类型 Shell变量赋...

  • Shell常用命令(md格式方便阅读和复制粘贴)

    Shell Shell中的变量 系统变量 自定义变量 自定义变量规则 Shell特殊变量 运算符 条件判断 基本语...

  • shell第11章shell脚本

    什么是shell? Bash shell: 什么是shell脚本? 变量的介绍: 普通变量介绍: 环境变量介绍: ...

  • shell变量详解

    本文转载自Hello,Barry的shell变量详解1 shell变量基础shell变量是一种很“弱”的变量,默认...

  • linux shell中常见的变量含义解释

    linux shell中常见变量含义解释:变量说明:$$Shell本身的PID(ProcessID)$!Shell...

  • Shell特殊变量

    Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数 特殊变量列表 变量 含...

  • Shell变量

    Shell 变量 变量的分类 本地变量 全局变量 shell 内置变量 本地变量 本地变量就是:在当前系统的某个环...

  • bash环境变量

    环境变量是全局变量 自定义变量是局部变量 bash:可以进入当前shell的子shell(当前shell指的是当前...

  • shell

    shell变量 变量类型:局部变量局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程...

网友评论

      本文标题:shell变量

      本文链接:https://www.haomeiwen.com/subject/dqpgfctx.html