LinuxShell变量

变量:

命名规则:

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

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

变量定义:

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

#!/bin/bash
#########################
#File name:4.sh
#Version:V10.24
#Author: 小
#Email:[email protected]
#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

LinuxShell变量_第1张图片

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

LinuxShell变量_第2张图片

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

只读变量(常量):

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

位置参数,预定义变量:

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

LinuxShell变量_第3张图片

案例:
#!/bin/bash
#########################
#File name:4.sh
#Version:V10.24
#Author: 小
#Email:[email protected]
#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:[email protected]
#Created time:2023-03-19 15:32:33
#Description:
#########################

ping -c2 $1 &>/dev/null
if [ $? = 0 ];then
	echo "host:$1 is fine"
else
	echo "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
$*是将所有参数作为一个返回值
$@是将每个参数分别返回

你可能感兴趣的:(Shell,linux,运维,shell)