shell变量

Posted Lani

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell变量相关的知识,希望对你有一定的参考价值。

1  $0 当前的脚步名
2 $n 传递给脚本或者函数的第几个参数,$1第一个参数,$2第二个参数
3 $* 传递给脚本或者函数的所有参数
4 [email protected] 传递给脚本或者函数的所有参数
5 &* 与[email protected]的区别,在双引号中,$*以一个整体传入进去
6 $# 传入参数的个数
7 $$ 当前shell的进程id
8 $?上一个命令的退出状态
vim test2.sh
#!/bin/bash
echo "file name: $0"
echo "first parameter: $1"
echo "first parameter: $2"
echo "first paramerer: [email protected]"
echo "first parameret: $*"
echo "first paramerer: $#"
[[email protected] code]# ./test2.sh hello world laiying
file name: ./test2.sh
first parameter: hello
first parameter: world
first paramerer: hello world laiying
first parameret: hello world laiying
first paramerer: 3

 shell变量名定义规则

以字母,数字,下划线组成
必须以字母,或者下划线开头
不能以shell里面的关键字命名
使用变量,只要在变量前加$就可以调用变量
a = hello
echo $a

规范,最好在变量名外面加{},这个是可选的,加花括号是为了帮助解释器识别变量的边界

shell中单引号和双引号的区别

在单引号中,如果包含了变量名,解释器会解析不了变量名或者命令,需要用反引引起来才能识别

在双引号中,可以识别变量或者命令

 read命令,使用read命令从stdin获取输入并赋值给PERSON,最后在stdout输出

vim test.sh
#!/bin/bash
echo "what is you name"
read PERSON
echo "hello, $PERSON"


[[email protected] code]# chmod +x test.sh 
[[email protected] code]# ./test.sh
what is you name
jack
hello, jack

readonly只读变量,该命令可以将变量定义为只读变量,只读变量的值不能被改变

vim test.sh
#!/bin/bash
name="ying"
readonly name
name="xixing"

[[email protected] code]# ./test.sh 
./test.sh:行4: name: 只读变量

unset删除变量

语法 unset varable_name

[[email protected] code]# name="jack"
[[email protected] code]# echo $name
jack
[[email protected] code]# unset name
[[email protected] code]# echo $name
以上没有任何输出

 

以上是关于shell变量的主要内容,如果未能解决你的问题,请参考以下文章

Shell编程入门

代码片段:Shell脚本实现重复执行和多进程

玩转Bash变量

玩转Bash变量

2.5.2 变量

如何创建片段以重复变量编号中的代码行