shell运行脚本以及定义变量

##############################
1.如何查看当前用户默认shell
##############################
echo $SHELL

cat /etc/passwd | head -1

grep root /etc/passwd
在这里插入图片描述
可知在当前用户下脚本开头应为
#!/bin/bash

###############################
2.怎么写脚本
###############################
#!/bin/bash
echo “hello”
echo后接的是输出内容
在这里插入图片描述
有权限时
给权限后输入路径运行
此过程是打开一个新shell执行,不会把值传回
/mnt/1.sh
./1.sh
在这里插入图片描述
这种方式会使用source或.号来读如指定shell文件,并会把其他shell中的变量值或函数返回给父shell继续使用
source 1.sh
. 1.sh
在这里插入图片描述
没有执行权限时
此过程是打开一个新shell执行,不会把值传回
sh 1.sh
bash 1.sh

例如
在这里插入图片描述
直接运行查看username时为空格
在这里插入图片描述
source运行后查看username就有结果
在这里插入图片描述

写一个脚本自动安装httpd并且设置开启服务和开机启动
在这里插入图片描述

###################
3.环境变量和普通变量
#####################
环境变量是系统定义的变量

普通变量需要自己定义

(1)不加引号,单引号和双引号的区别

不加引号时
a=ab
echo $a输出为ab

单引号

b=‘b-$a’
echo b b b输出为 b- a

双引号

c=“c-$a”
echo $c输出为
c-ab
区别在于双引号内会解析
在这里插入图片描述

(2)$0

#!/bin/bash
echo $0

sh 1.sh输出结果
1.sh
在这里插入图片描述

/mnt/1.sh输出结果为
/mnt/1.sh

在这里插入图片描述
(3)$n

#!/bin/bash
echo $1 $2

sh后接两输入
运行输出为两输入
在这里插入图片描述
编写文件内容为$1到$10
在这里插入图片描述

sh 1.sh {a…z}就是显示后接1到10个输出
但是输出为a到a0
在这里插入图片描述
此时$10意思是 1 0 1和0 需要改为 (10)

(4)$#
意思是后面输入的总数

(5)read str
意思是定义一个输入
echo $str查看
在这里插入图片描述
我们可以增加一个提示
read -p “请输入一个数:” i
echo $str查看
在这里插入图片描述
(6)把结果赋值给变量

CMD=$(ls -l)
echo $CMD查看变量

在这里插入图片描述
练习打包所有日志并且名字为当前日期
命令
tar zcf log_$(date +%F).tar.gz /var/log
脚本

#!/bin/bash
tarname="log_$(date +%F).tar.gz"
tar zcf $tarname /var/log/

在这里插入图片描述
(7)$?
检测上条命令执行结果的返回值
echo $?
0表示执行成功
非0表示执行失败
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qwefyjwww/article/details/85242772