linux Shell 命令行-02-var 变量

拓展阅读

linux Shell 命令行-00-intro 入门介绍

linux Shell 命令行-02-var 变量

linux Shell 命令行-03-array 数组

linux Shell 命令行-04-operator 操作符

linux Shell 命令行-05-test 验证是否符合条件

linux Shell 命令行-06-flow control 流程控制

linux Shell 命令行-07-func 函数

linux Shell 命令行-08-file include 文件包含

linux Shell 命令行-09-redirect 重定向

定义

  • 变量名和=之间不能有空格
  • 必须以 [a-zA-Z] 开头,变量名可以包含_
  • 不能包含标点符号和关键字
ini 复制代码
my_name="houbinbin"

重新定义

已定义的变量可以重新定义

ini 复制代码
my_name="houbinbin"
my_name="ryo"

使用

  • use_var.sh
bash 复制代码
my_name="houbinbin"
echo $my_name
  • 运行
ruby 复制代码
houbinbindeMacBook-Pro:shell houbinbin$ vi use_var.sh
houbinbindeMacBook-Pro:shell houbinbin$ /bin/sh use_var.sh
houbinbin

只读

readonly变量不能被更改。

  • readonly_var.sh
ini 复制代码
# !/bin/bash

my_name="houbinbin"
readonly my_name

my_name="new name"
  • 运行
ruby 复制代码
houbinbindeMacBook-Pro:shell houbinbin$ vi readonly_var.sh
houbinbindeMacBook-Pro:shell houbinbin$ /bin/sh readonly_var.sh
readonly_var.sh: line 4: my_name: readonly variable

删除

使用 unset 来删除定义的变量。

  • unset_var.sh
bash 复制代码
#!/bin/bash

my_name="ryo"
unset my_name
echo ${my_name}
  • 运行
ruby 复制代码
houbinbindeMacBook-Pro:shell houbinbin$ vi unset_var.sh
houbinbindeMacBook-Pro:shell houbinbin$ /bin/sh unset_var.sh

houbinbindeMacBook-Pro:shell houbinbin$

特殊变量

命令 描述
$0 当前脚本的文件名
$n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是 <math xmlns="http://www.w3.org/1998/Math/MathML"> 1 ,第二个参数是 1,第二个参数是 </math>1,第二个参数是2。
$# 传递给脚本或函数的参数个数。
$* 传递给脚本或函数的所有参数。
$@ 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。
$? 上个命令的退出状态,或函数的返回值。
$$ 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。
  • special_var.sh
bash 复制代码
#!/bin/bash
echo "File Name: $0"
echo "First Parameter : $1"
echo "First Parameter : $2"
echo "Quoted Values: $@"
echo "Quoted Values: $*"
echo "Total Number of Parameters : $#"
  • 运行
sql 复制代码
houbinbindeMacBook-Pro:shell houbinbin$ vi special_var.sh
houbinbindeMacBook-Pro:shell houbinbin$ /bin/sh special_var.sh hello world my
File Name: special_var.sh
First Parameter : hello
First Parameter : world
Quoted Values: hello world my
Quoted Values: hello world my
Total Number of Parameters : 3

$*$@

$*$@ 都表示传递给函数或脚本的所有参数,不被""包含时,都以" <math xmlns="http://www.w3.org/1998/Math/MathML"> 1 " " 1" " </math>1""2" ... "$n" 的形式输出所有参数。

但是当它们被""包含时,$* 会将所有的参数作为一个整体,以" <math xmlns="http://www.w3.org/1998/Math/MathML"> 1 1 </math>12 ... <math xmlns="http://www.w3.org/1998/Math/MathML"> n " 的形式输出所有参数; ' ' ' n"的形式输出所有参数;``` </math>n"的形式输出所有参数;'''@``` 会将各个参数分开,以" <math xmlns="http://www.w3.org/1998/Math/MathML"> 1 " " 1" " </math>1""2" ... "$n" 的形式输出所有参数。

  • diff_demo.sh
bash 复制代码
#!/bin/bash

# Author:houbinbin

echo "display of \$* "

for i in "$*";
do
    echo $i
done

echo "display of \$@ "
for i in "$@";
do
    echo $i
done
  • 运行
ruby 复制代码
houbinbindeMacBook-Pro:shell houbinbin$ vi diff_demo.sh
houbinbindeMacBook-Pro:shell houbinbin$ /bin/sh diff_demo.sh 1 2 3 4
display of $*
1 2 3 4
display of $@
1
2
3
4
houbinbindeMacBook-Pro:shell houbinbin$

参考资料

www.runoob.com/linux/linux...

本文由博客一文多发平台 OpenWrite 发布!

相关推荐
武子康几秒前
Java-169 Neo4j CQL 实战速查:字符串/聚合/关系与多跳查询
java·开发语言·数据库·python·sql·nosql·neo4j
q***23574 分钟前
记录 idea 启动 tomcat 控制台输出乱码问题解决
java·tomcat·intellij-idea
一只小灿灿4 分钟前
深入解析 Maven 与 Gradle:Java 项目构建工具的安装、使用
java·开发语言·maven
深色風信子5 分钟前
Java Maven Log4j 项目日志打印
java·log4j·maven·java maven
小道仙9712 分钟前
Dubbo如何使用Nacos做注册中心的
java·nacos·dubbo·服务注册
q***985224 分钟前
【保姆级教程】apache-tomcat的安装配置教程
java·tomcat·apache
CodeAmaz1 小时前
统一发包管理(Maven 仓库)详细步骤
java·maven·运维开发·个人开发
没有bug.的程序员1 小时前
Spring Cloud Bus 事件广播机制
java·开发语言·spring boot·hystrix·feign·springcloudbus·事件广播机制
找不到、了1 小时前
Java系统设计知识整理《1》
java·开发语言
程序猿七度1 小时前
【Excel导入】读取WPS格式嵌入单元格内的图片
java·开发语言·wps