linux基本操作---shell脚本-变量、表达式、日期

Linux shell解释型脚本语言

直接调用linux命令

Shell 脚本执行的两种方式

  1. sh 脚本文件
  2. ./脚本文件 ,需要脚本文件有执行权限
[root@localhost test]# ./test.sh
-bash: ./test.sh: Permission denied


赋执行权限:
[root@localhost test]# chmod u+x ./test.sh 
[root@localhost test]# ll
total 4
-rwxr--r--. 1 root root 21 Dec 13 06:22 test.sh

可以执行
[root@localhost test]# ./test.sh 

Shell脚本 — 变量

环境变量

  1. 全局环境变量,所有用户有效vi /etc/profile
  2. 用户环境变量,当前用户有效~/.bash_profile

位置变量

echo 回显变量

Demo:
[root@localhost test]# cat test.sh
#!/bin/bash

echo $0
echo $2
echo $1

执行这个脚本

[root@localhost test]# ./test.sh  arg0 arg1
./test.sh
arg1
arg0

可以看到$0 表示脚本名称
$1 表示第一个参数
$2 表示第二个参数

预定义变量

前面的$0表示脚本名称,还有一些其他的预定义变量

$0 脚本名称
$! 进程的PID$? 程序执行的状态 0表示成功 非0不成功
$* 所有参数 整体
$@ 所有参数 逐个
$# 参数的总个数
$$ 当前进程的id号
demo

[root@localhost test]# cat test.sh
#!/bin/bash

echo $0
echo $*
echo $@
echo $$
echo $!
echo $?
echo $#
执行该脚本
[root@localhost test]# ./test.sh arg0 arg1 arg2 arg3
./test.sh
arg0 arg1 arg2 arg3
arg0 arg1 arg2 arg3
3560

0
4

自定义变量

name=[value]
等号两边不能有空格
对大小写敏感
${}符号取值

[root@localhost test]# a=3

[root@localhost test]# echo ${a}
3

Shell 脚本常用表达式

逻辑连接符

  1. &&逻辑与 前面成功后面才执行,前面失败后面不执行。
  2. || 逻辑或 前面失败执行后面,前面成功后面不执行
Demo:
逻辑与
[root@localhost test]# cat test.sh && echo 3
#!/bin/bash
echo $0
echo $*
echo $@
echo $$
echo $!
echo $?
echo $#
3

[root@localhost test]# cat test.shtse && echo 3
cat: test.shtse: No such file or directory

逻辑或
[root@localhost test]# cat test.sh || echo 3
#!/bin/bash

echo $0
echo $*
echo $@
echo $$
echo $!
echo $?  这个很重要,下面会用到
echo $#


[root@localhost test]# cat test.shtse || echo 3
cat: test.shtse: No such file or directory
3

3.无逻辑符号 ; 他们先后执行

[root@localhost test]# echo $a ; echo $b
2
3

4.连接符号 -a(and) -o(or)

[root@localhost test]# [ -e /etc/passwd -a -e test.sh ];echo $?
0

返回0表示执行才成功 ,-e表示 exists 存在

[root@localhost test]# [ -e /etc/passwdss -a -e test.sh ];echo $?
1

返回1表示执行失败,

[root@localhost test]# [ -e /etc/passwdss -o -e test.sh ];echo $?
0

返回0表示执行成功,这次使用的是-o or的意思

内置判断

文本判断
 [root@localhost test]# [ -e /etc/passwdss -o -e test.sh ];echo $?
0

其中-e表示exists 文件是否存在

除了-e之外,还有其他的判断文件的符号

例如:
-e   (exits) 是否存在
-d   (directory) 是否是目录
-f   (file) 是否是文件
-r   (read) 是否可读
-w  (write) 是否可写
-x   (excute) 是否可执行
字符串判断
-z表示 zero string的长度为0
-n 表示 not zero string的长度不为0
[root@localhost test]# arg="test"
[root@localhost test]# echo $arg
test
[root@localhost test]# [ -n "$arg" ] ; echo $?
0
[root@localhost test]# [ -z "$arg" ] ; echo $?
1
数字判断

-eq 等于
-ne 不等于
-lt 小于
-gt 大于
-ge 大于等于
-le 小于等于

Demo:
[root@localhost test]# a=2
[root@localhost test]# b=3
[root@localhost test]# echo $((a+b))
5
[root@localhost test]# a=2
[root@localhost test]# b=3
[root@localhost test]# echo $[a+b]
5
[root@localhost test]# expr $a+$b
2+3

时间命令

查看日期

按照指定的格式
[root@localhost test]# date '+%Y-%m-%d %H:%M:%S'
2017-12-13 07:30:11
按照指定的格式查看前一天日期
[root@localhost test]# date -d '-1 day' '+%Y-%m-%d %H:%M:%S'
2017-12-12 07:30:11
其他的 你也可以搞 -1 month -1 week
按照指定的格式查看前一天日期
[root@localhost test]# date -d '1 day ago' '+%Y-%m-%d %H:%M:%S'
2017-12-12 07:30:11
其他的你也可以搞a week age  a month age 等等

修改日期:

[root@localhost test]# date -s "2017-09-09 12:00"
Sat Sep  9 12:00:00 CST 2017
格式化修改后的日期
[root@localhost test]# date -s "2017-09-09 12:00"  '+%Y-%m-%d %H:%M:%S'
2017-09-09 12:00:00
参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

zhangshk_

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值