当前位置: 首页 > news >正文

LinuxShell变量

变量:

命名规则:

在Shell中,变量名可以由字母、数字或者下划线组成,并且只能以字母或者下划线开头。对于变量名的长度,Shell并没有做出明确的规定。因此,用户可以使用任意长度的字符串来作为变量名。但是,为了提高程序的可读性,建议用户使用相对较短的字符串作为变量名。

在一个设计良好的程序中,变量的命名有着非常大的学问。通常情况下,用户应该尽可能选择有明确意义的英文单词作为变量名,尽量避免使用拼音或者毫无意义的字符串作为变量名。这样的话,用户通过变量名就可以了解该变量的作用。

变量定义:

在Shell中,通常情况下用户可以直接使用变量,而无需先进行定义,当用户第一次使用某个变量名时,实际上就同时定义了这个变量,在变量的作用域内,用户都可以使用该变量。

#!/bin/bash
#########################
#File name:4.sh
#Version:V10.24
#Author: 小🐖
#Email:wgq3135@163.com
#Created time:2023-03-19 15:03:41
#Description:
#########################a=1
b="hello"echo $a
echo $b#RES:
[root@rhel9 01]# bash 4.sh 
1
hello

image-20230319152352775

#声明数组变量
[root@kittod ~]# declare -a cd='([0]="a" [1]="b" [2]="c")'
[root@kittod ~]# echo ${cd[1]}
b
[root@kittod ~]# echo ${cd[@]}
a b c

image-20230319152515693

注:也可使用env查看环境变量

只读变量(常量):

[root@rhel9 myTest]# str="name"
[root@rhel9 myTest]# readonly str
[root@rhel9 myTest]# str="$str++"
-bash: str:只读变量

位置参数,预定义变量:

许多情况下,Shell脚本都需要接收用户的输入,根据用户输入的参数来执行不同的操作。
从命令行传递给Shell脚本的参数又称为位置参数,Shell脚本会根据参数的位置使用不同的位
置参数变量读取它们的值。

image-20230319152641759

案例:
#!/bin/bash
#########################
#File name:4.sh
#Version:V10.24
#Author: 小🐖
#Email:wgq3135@163.com
#Created time:2023-03-19 15:03:41
#Description:
#########################echo "first arg:$1"
echo "second arg:$2"
echo "all(*) arg:$*"
echo "all(@) arg:$@"
echo "all arg number:$#"
echo "Program Process Id:$$"#RES:
[root@rhel9 01]# bash 4.sh 5 6 
first arg:5
second arg:6
all(*) arg:5 6
all(@) arg:5 6
all arg number:2
Program Process Id:112550
$?案例:
#!/bin/bash
#########################
#File name:5.sh
#Version:V10.24
#Author: 小🐖
#Email:wgq3135@163.com
#Created time:2023-03-19 15:32:33
#Description:
#########################ping -c2 $1 &>/dev/null
if [ $? = 0 ];thenecho "host:$1 is fine"
elseecho "host:$1 is bad"
fi#RES:
[root@rhel9 01]# bash 5.sh www.baidu.com
host:www.baidu.com is fine[root@rhel9 01]# bash 5.sh 192.168.5.1
host:192.168.5.1 is bad
$*$@的区别:
[root@rhel9 01]# set -- "i have" a cat
[root@rhel9 01]# echo $#
3
[root@rhel9 01]# echo $*
i have a cat
[root@rhel9 01]# echo $@
i have a cat
[root@rhel9 01]# for i in "$*";do echo $i;done
i have a cat
[root@rhel9 01]# for i in "$@";do echo $i;done
i have
a
cat#RES
$*是将所有参数作为一个返回值
$@是将每个参数分别返回
http://www.lryc.cn/news/152373.html

相关文章:

  • 如何实现的手机实景自动直播,都有哪些功能呢?
  • 如何让qt tableView每个item中个别字用不同颜色显示?
  • Aspose导出word使用记录
  • [Java]_[初级]_[使用SAX流的方式写入XML文件]
  • java里面封装https请求工具类
  • uniApp常见面试题-附详细答案
  • Java“牵手”1688整店商品API接口数据,通过店铺ID获取整店商品详情数据,1688店铺所有商品API申请指南
  • 数据进制的转换
  • 如何分析识别文章/内容中高频词和关键词?
  • Windows7安装SSH客户端的解决方案
  • 力扣:81. 搜索旋转排序数组 II(Python3)
  • TCP IP网络编程(三) 地址族与数据序列
  • 对比Flink、Storm、Spark Streaming 的反压机制
  • Ubuntu常用配置集合
  • 传统三维重建和深度学习三维重建 MVS笔记总结、问题总结
  • Ansible学习笔记10
  • 肖sir__linux详解__002(系统命令)
  • AI绘画:StableDiffusion实操教程-斗罗大陆2-江楠楠-常服(附高清图下载)
  • JavaScript运行机制与实践应用
  • 【算法奥义】最大矩形问题
  • 06 Kafka线上集群部署方案
  • flex-shrink计算题
  • Springboot - 5.Bean的生命周期
  • 华为云 sfs 服务浅谈
  • CSS中如何实现元素的渐变背景(Gradient Background)效果?
  • buildroot修改内核防止清理重新加载办法
  • Vue框架--Vue中的事件
  • 1921. 消灭怪物的最大数量
  • 创建一个空的vue项目,配置及步骤
  • 一篇文章教会你如何编写一个简单的Shell脚本