shell脚本:变量

首行:#!/bin/bash

#!符号能够被内核识别成为一个脚本的开始,这一行必须位于脚本的首行

注释:#

除去第一行的#

内容:可执行结构和内容

创建文件的方式:

touch

echo “” > first.sh 注:向文件输入””中的内容 > 是覆盖  >> 是追加

vim

chmod +x first.sh 给文件赋予权限

执行脚本:

绝对路劲、相对路径 会新开一个bash,不同的bash中的变量无法共享

bash first.sh 会新开一个bash,不同的bash中的变量无法共享

source first.sh source只在同一个bash执行,共享变量

变量设置规则

变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名,建议大写便于区分

在bash中,变量的默认类型是字符串类型,乳沟要进行数值运算,则必须指定变量类型为数值类型

变量等号连接,等号两边不能有空格(单双引号中可以使用空格)

变量分类

用户自定义变量、环境变量、位置参数变量、预定义变量

可以通过set查看系统中的所有变量

位置参数变量:主要是用来向脚本中传递参数或数据,变量名不能自定义,变量作用固定

预定义变量:是bash中已经定义好的变量,变量名不能自定义,变量的作用是固定的

用户自定义变量

将一个命令赋值于一个变量

a=`ls` #1前面的那个符号

a=$(ls)

将一个变量赋值于另一个变量

a=$b

a=$(b)

a=”$b” #单引号不是赋值,双引号才是赋值

删除变量

uset

注:用户自定义变量,作用域为当前的shell环境,如果通过bash进入子shell环境,就取不到值了

环境变量

用户自定义变量只在当前shell中生效,而环境变量会在当书签shell和子shell中生效,如果把环境变量写入相应的配置文件,那么环境变量会在所有的shell中生效

export 变量名=变量值  #声明变量

位置参数变量

$n  $0代表命令本身,$1-$9代表顺序参数编号,大于10的话使用括号,如${10}

$* 把所有参数当作整体

$@ 把每个参数分开对待

$# 所有参数的个数

eg:./**.sh 11 22 33 44

echo "所有参数个数:$#" 4

echo "所有参数:$*"   11 22 33 44

echo "所有参数:$@" 11 22 33 44(这个是一个一个输出的)

位置变量和预定义变量一个脚本

#!/bin/bash

echo '$0 获取当前执行的Shell脚本文件名: ' "$0"

echo '$n 获取当前执行的Shell脚本的第n个参数值,n=1..9 ' '$1'=$1,'$2'=$2,'$3'=$3

echo '$ 获取当前Shell的所有参数 $1 $2 $3 ...注意与$@的区别:' $

echo '$# 获取当前Shell命令行中的参数总个数:' $#

echo '$$ 获取当前Shell的进程号(PID): '$$

sleep 3 &

echo '$! 执行上一个指令的PID: ' $!

echo '$? 获取执行的上一个指令的返回值: ' $?

echo '$@ 获取当前Shell的所有参数 "$1" "$2" "$3" "...":' $@

echo '$ 在此之前的命令或脚本的最后一个参数: '$

EOF

sh positional.sh a b c d e

$0 获取当前执行的Shell脚本文件名: positional.sh

$n 获取当前执行的Shell脚本的第n个参数值,n=1..9 $1=a,$2=b,$3=c

$* 获取当前Shell的所有参数 $1 $2 $3 ...注意与$@的区别: a b c d e

$# 获取当前Shell命令行中的参数总个数: 5

$$ 获取当前Shell的进程号(PID): 1979

$! 执行上一个指令的PID: 1980

$? 获取执行的上一个指令的返回值: 0

$@ 获取当前Shell的所有参数 "$1" "$2" "$3" "...": a b c d e

$_ 在此之前的命令或脚本的最后一个参数: e

猜你喜欢

转载自blog.csdn.net/ademing/article/details/83045947
今日推荐