linux basic knowledge

shell脚本学习(二)[变量,转义,运算符等]

2020-01-19  本文已影响0人  巩翔宇Ibrahimovic

Chapter8 变量的引用

变量的引用

1.1 ${变量名}称作对变量的引用。

1.2 echo ${变量名}查看变量的值。

1.3 ${变量名}在部分情况下可以省略为 $变量名

变量的作用范围

变量的默认作用范围

变量的导出,export

举例:

demo_var1="hello subshell"
vim 4.sh
#!/bin/bash
#test echo
echo $demo_var1
chmod u+x 4.sh

#不同运行方式对脚本运行产生的影响
source 4.sh 或 . 4.sh #对当前终端生效
bash 4.sh 或 ./4.sh #变量是空的,没有取到值,因为是使用子进程的方式来运行。
#对子进程进行改变的话,就是使用export,让子进程取到父进程的值,也就是等于 source  或  . 
export demo_var1
./4.sh 或 bash 4.sh

变量的删除,unset

unset demo_var1 #删除变量的赋值,当不使用变量时

Chapter9 环境变量、预定义变量与位置变量

系统环境变量

环境变量:每个Shell打开都可以获得到的变量。

setenv命令;$?,$$,$0;$PATH;$PS1

位置变量: $1 $2 ... $n

#查看当前命令的搜索路径
echo $PATH

vim 5.sh
#!/bin/bash
#demo
echo "hello bash"
du -sh
chmod u+x 5.sh
#在当前路径下直接运行
./5.sh
#在其他任意路径都可运行,首先进行目录替换
PATH=$PATH:/root
echo $PATH #再查看目录,确定有目录
5.sh #在任意目录都可直接执行,但在另一个终端就不可以

预定义变量:$?,$$,$0

#上一条命令是否正确执行
echo $? #返回值为0则正确执行
#显示当前进程的PID,从而检测脚本运行状态
echo $$
#当前进程的名称
echo $0

vim 6.sh
#!/bin/bash
#PID Pname
echo $$
echo $0
chmod u+x 6.sh

vim 7.sh
#!/bin/bash
# $1 $2 ... $9 ${10} 这里要用大括号将10括起来,不然会读成$1
pos1=$1
pos2=$2
echo $pos1
echo $pos2
chmod u+x 7.sh
#pos1即为-a,pos2即为-l。
./7.sh -a -l

Chapter 10 环境变量配置文件

环境变量配置文件

配置文件/etc/profile,/etc/profile.d/,~/.bash_profile,~/.bashrc,/etc/bashrc

~ 是家目录下,etc目录下是所有的环境变量,是给所有用户使用的。

添加环境变量:export PATH=$PATH:/new/path使用export是保证自己的进程和子进程都能够使用。

添加完环境变量后使用source进行生效。source /etc/bashrc.

Chapter11 数组

定义数组

IPTS=( 10.0.0.1 10.0.0.2 10.0.0.3)定义数组时可以加空格,并且在每个元素前面都加空格。

显示数组的所有元素

echo ${IPTS[@]}

显示数组元素个数

echo ${#IPTS[@]}

显示数组的第一个元素,0表示第一个元素。

echo ${IPTS[0]}

举例:

IPTS=( 10.0.0.1 10.0.0.2 10.0.0.3)
echo $IPTS #只会显示第一个元素
echo ${IPTS[@]} #显示数组所有元素,大括号和引用名称不允许有空格。
echo ${#IPTS[@]} #通过加井号来统计数组有多少元素。
echo ${IPTS[0]} #显示数组的第一个元素,0表示第一个元素,为往后使用循环以此读取数组内的元素做铺垫。

Chapter12 转义和引用

特殊字符:一个字符不仅有字面意义,还有元意(meta-meaning)

# 注释,

;分号 连接两条命令。

\转义符号 单个字符前的转义符号:\n \r \t单个字母的转义,\$ \" \\单个非字母的转义。要想打印出''或$,就用转义,如\"

""引号
常用引用符号

""双引号对变量不完全引用,会显示值。

''单引号对变量完全引用,显示内容。

举例:

#单双引号在变量上的区别
var1=123
echo `$var1` #结果为 $var1
echo "$var1" #结果为 123

" ` "反引号。

Chapter13 运算符

1.赋值运算符

= 赋值运算符,用于算数赋值和字符串赋值。

使用unset取消为变量的赋值。

=除了作为赋值运算符还可以作为测试运算符。

2.算数运算符

2.1 基本运算符 + - * / ** %

2.2 使用expr进行运算 expr 4+5,expr只支持整数,不支持浮点数(小数)。

3.数字常量

let "let变量名=变量值"

变量值使用0开头为八进制

变量值使用0x开头为十六进制

4.双圆括号

双圆括号是let命令的简化,一般用这个。

((a=10)),

((a++)) 执行一次,这个值就加1

echo $((10+20))

举例:

#使用expr做计算,直接输出值
expr 4 + 5 #数字和符号之间有空格,只支持整数,不支持非整数,结果为9

num1='expr 4 + 5'
echo $num1 #结果为9

((a=4+5))
echo $a #结果为9

b=4+5
echo $b #结果为4+5,因为单独使用并赋值时,会被当成字符串,而不会计算值。
(( a++ )) #结果为10,++在循环中使用,保证每次都加1;也可以用--,每次都减1
上一篇下一篇

猜你喜欢

热点阅读