shell脚本学习_变量-1

学习目标:

学习shell脚本变量用法:用户自定义变量,环境变量,命令行参数(位置变量),预定义变量

 

总结:

执行shell脚本可用。./脚本名;source 脚本名;sh 脚本名。后两种不必用加x权限。

shell脚本注释为#

变量赋值前后不能有空格

在windows下编辑shell脚本行尾有回车换行,运行脚本会报invalid \r

命令行传入参数以空格区分

 

正文

1- shell脚本初识

shell脚本就是把shell命令写成一个可执行文件。

示例:

a- 新建一个shell.sh文件,用vim打开并在里面输入ls,保存。

b- 赋予这个文件可执行权限x

c- 在shell环境下执行:./shell.sh,即开始运行这个脚本

注意:用vim编辑,因为window下编辑,每行最后有换行符,执行会报错:invalid ‘\r’

#shell.sh
ls

 

2- 用户自定义变量

a- 用户自定义变量和C语言里的变量一样,但是变量=前后不能有空格!

b- 变量没有数据类型,全部被当作字符

c- 如果想打印变量,使用命令:echo $变量名

d- 变量间赋值,和C语言一样,但是注意使用$符号:被赋值变量=$赋值变量

e- 清除变量赋值,命令:unset 变量名

示例:

/*a-c */
count=5
echo $count //打印5; 若echo count只会打印count

/*d- */
count=5
tmp=$count
echo "count=$count"  //打印count=5
echo "tmp=$tmp"    //打印tmp=5

/*e- */
unset count  //删除变量赋值
echo "count=$count"  //此时打印count=

 

3- 命令行参数(位置变量)

命令行参数:

$0 文件名
$1到$9 命令行参数,就是执行脚本文件后面的参数,分别对应$1-$9
$# 命令行参数个数,就是执行脚本文件后面的参数个数
$@ 所有命令行参数个数,就是执行脚本文件后面的参数,和$*作用一样
$* 所有命令行参数个数,就是执行脚本文件后面的参数,和$@作用一样
$$ 进程PID

注意还有个$?用于打印上次执行结果,该参数结合第2篇博客理解。

上面的命令行参数理解结合示例:

先上效果如下。

需要说明的的是:

脚本文件后面跟的参数个数以空格为区分的,多个空格当成一个空格。

命令行传入参数大于9个,如果想打印,必须加{},echo ${10}

 

root@ubuntu:/home/shell# ./shell.sh hello world , welcom to beijing of chain .   my friends !
$0_name:./shell.sh
$#_num:12
$*_all:hello world , welcom to beijing of chain . my friends !
$@ all:hello world , welcom to beijing of chain . my friends !
$$ PID:17988
$? : 0
$1: hello
$2: world
$3: ,
$4: welcom
$5: to
$6: beijing
$7: of
$8: chain
$9: .
$10: my
$11: friends
$12: !

附脚本文件:

#shell.sh
echo "\$0_name:$0"
echo "\$#_num:$#"
echo "\$*_all:$*"
echo "\$@ all:$@"
echo "\$$ PID:$$"
echo "\$? : $?"
echo "\$1: $1"
echo "\$2: $2"
echo "\$3: $3"
echo "\$4: $4"
echo "\$5: $5"
echo "\$6: $6"
echo "\$7: $7"
echo "\$8: $8"
echo "\$9: $9"
echo "\$10: ${10}"
echo "\$11: ${11}"
echo "\$12: ${12}"

 

4- 环境变量

PATH、PWD、HOME等,命令行执行export可看到当前环境变量

echo $PWD

该部分内容暂不做过多理解。

你可能感兴趣的:(shell脚本)