##############################
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
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意思是
(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表示执行失败