[root@Redis01 ~]# cd /install/
[root@Redis01 install]# mkdir -p test && cd test

-s修改时间:
[root@Redis01 test]# date
2017年 11月 30日 星期四 21:55:03 CST
[root@Redis01 test]# date `+%F %T %A`
2017年 11月 30日 星期四 21:56:25 CST
[root@Redis01 test]# date '+%F'
2017-11-30
[root@Redis01 test]# date '+%T'
21:57:11
[root@Redis01 test]# date '+%A'
星期四
[root@Redis01 test]# date -s "2017-11-30 14:44:40"
2017年 11月 30日 星期四 14:44:40 CST
更新主板和芯片时间
[root@Redis01 test]# clock -w
[root@Redis01 test]# date '+%F %T %A'
2017-11-30 14:45:47 星期四

[root@Redis01 test]# myname=lisi
[root@Redis01 test]# echo $myname
lisi
[root@Redis01 test]# echo my neme is $myname
my neme is lisi
[root@Redis01 test]# echo $mynameis man
man
[root@Redis01 test]# echo ${myname}is man
lisiis man

说一些指令
小括号()和反单引号效果相似:
[root@Redis01 test]# echo `echo kkk`
kkk
[root@Redis01 test]# echo $(echo kkk)
kkk

数字表示的是下标,下标是从0开始:
[root@Redis01 test]# echo ${#myname}
4
[root@Redis01 test]# echo ${myname:3}
i
[root@Redis01 test]# echo ${myname:4}

单斜线是替换第一次匹配结果,双斜线是全部替换:
[root@Redis01 test]# echo ${myname/si/gang}
ligang
[root@Redis01 test]# echo ${myname/si/}
li
[root@Redis01 test]# myname=liyongfuyongfu
[root@Redis01 test]# echo ${myname/yongfu/gang}
ligangyongfu
[root@Redis01 test]# echo ${myname//yongfu/gang}
liganggang

%表示匹配最后一个;#表示匹配第一个:
[root@Redis01 test]# echo ${myname/%yongfu/gang}
liyongfugang
[root@Redis01 test]# echo ${myname/#yongfu/gang}
liyongfuyongfu
[root@Redis01 test]# echo ${myname/#li/gang}
gangyongfuyongfu

echo输出会换行;printf不会换行:
[root@Redis01 test]# printf kkk
kkk[root@Redis01 test]# echo printf
printf

:-没值时不会自动赋值;而:=没值时会自动赋值;但没值时都会输出默认值;
[root@Redis01 test]# kk=liyongfu
[root@Redis01 test]# echo ${kk:-ligang}
liyongfu
[root@Redis01 test]# echo ${km}

[root@Redis01 test]# echo ${km:-ligang}
ligang
[root@Redis01 test]# echo ${km}

[root@Redis01 test]# echo ${kl:=ligang}
ligang
[root@Redis01 test]# echo ${kl}
ligang

数学运算:
(()):
[root@Redis01 test]# sum=0
[root@Redis01 test]# ((sum=sum+10))
[root@Redis01 test]# echo $sum
10
[root@Redis01 test]# ((sum = sum + 10))
[root@Redis01 test]# echo $sum
20

[root@Redis01 test]# a=10
[root@Redis01 test]# b=20
[root@Redis01 test]# c=+
[root@Redis01 test]# ((sum = ${a} ${c} ${b}))
[root@Redis01 test]# echo $sum
30

[root@Redis01 test]# ex=3+3-5*0/5
[root@Redis01 test]# echo $ex
3+3-5*0/5
[root@Redis01 test]# ((sum = $ex))
[root@Redis01 test]# echo $sum
6

数字比较用-gt/-lt/-eq/-ge/-le/-ne;
字符串比较>、<、==、!=
[root@Redis01 test]# [ 3>2 ] && echo "yes" || echo "no"
no
[root@Redis01 test]# [ 3 > 2 ] && echo "yes" || echo "no"
yes
[root@Redis01 test]# [ 3 < 2 ] && echo "yes" || echo "no"
yes
[root@Redis01 test]# [ 3 -gt 2 ] && echo "yes" || echo "no"
yes
[root@Redis01 test]# [ 3 -lt 2 ] && echo "yes" || echo "no"
no
[root@Redis01 test]# [ 3 -ge 2 ] && echo "yes" || echo "no"
yes
[root@Redis01 test]# [ 3 -le 2 ] && echo "yes" || echo "no"
no
[root@Redis01 test]# [ 3 -eq 2 ] && echo "yes" || echo "no"
no
[root@Redis01 test]# [ 3 -ne 2 ] && echo "yes" || echo "no"
yes
[root@Redis01 test]#
[root@Redis01 test]#
[root@Redis01 test]# he=ligang
[root@Redis01 test]# wo=yongfu
[root@Redis01 test]# [ $he == $wo ] && echo "yes" || echo "no"
no
[root@Redis01 test]# [ $he != $wo ] && echo "yes" || echo "no"
yes

-f判断文件是否存在;-d判断文件夹是否存在;
[root@Redis01 test]# [ -f "$fp" ] && echo "exists" || echo "not exists"

[root@Redis01 test]# echo this is a txt>>a.txt
[root@Redis01 test]# cat a.txt
this is a txt
[root@Redis01 test]# [ -f "$fp" ] && cat a.txt || touch a.txt
this is a txt

[root@Redis01 test]# [ -d "$fp" ] && echo "exists" || echo "not exists"

(1):
[root@Redis01 test]# vi test.sh
[root@Redis01 test]# cat test.sh
#!/bin/sh
#定义一个变量,变量的值指向一个目录
fp=/install/test/a
[ -d $fp ] && {
  echo "dir is exists";
  echo "dir is exists"
}||{
  echo "dir not exists";
  echo "dir not exosts"
}
[root@Redis01 test]# sh test.sh

(2):
[root@Redis01 test]# vi test.sh
[root@Redis01 test]# cat test.sh
#!/bin/sh
#定义一个变量,变量的值指向一个目录
fp=/install/test/a
if [ -d $fp ];then
  echo "dir is exists";
  echo "dir is exists"
else
  echo "dir not exists";
  echo "dir not exost"
fi
[root@Redis01 test]# sh test.sh

(3):固定变量值
[root@Redis01 test]# vi test.sh
[root@Redis01 test]# cat test.sh
#!/bin/sh
#定义一个变量,变量的值指向一个目录
age=90
if [ $age -gt 100 ];then
  echo "他是老年人"
elif [ $age -gt 60 ];then
  echo "他是中老年人"
elif [ $age -gt 40 ];then
  echo "他是青年人"
elif [ $age -gt 20 ];then
  echo "他是少年"
else
  echo "他是小孩"
fi
[root@Redis01 test]# sh test.sh
他是中老年人

(4):运行时,传值
[root@Redis01 test]# vi test.sh
[root@Redis01 test]# cat test.sh
#!/bin/sh
#定义一个变量,变量的值指向一个目录
#第一个参数是$0,它表示当前脚本文件的名字,从数字1开始(即$1,$2...)表示传给脚本文件的名字
fileName=$0
echo "script file is $fileName"
age=$1
if [ $age -gt 100 ];then
  echo "他是老年人"
elif [ $age -gt 60 ];then
  echo "他是中老年人"
elif [ $age -gt 40 ];then
  echo "他是青年人"
elif [ $age -gt 20 ];then
  echo "他是少年"
else
  echo "他是小孩"
fi
[root@Redis01 test]# sh test.sh 35
script file is test.sh
他是少年

序列:
[root@Redis01 test]# echo {1..5}
1 2 3 4 5
[root@Redis01 test]# echo {a..z}
a b c d e f g h i j k l m n o p q r s t u v w x y z
[root@Redis01 test]# echo {A..h}
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ ] ^ _ ` a b c d e f g h
[root@Redis01 test]# seq 5
1
2
3
4
5

tr截断设置分隔符;
[root@Redis01 test]# seq 5|tr '\n' ' '
1 2 3 4 5 [root@Redis01 test]# seq -s ' ' 5
1 2 3 4 5
-s直接设置分割方式;
[root@Redis01 test]# seq -s ' ' 5 50
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50

1 2 50其中的1表示起始数字,5表示步长,50表示结束数字;
[root@Redis01 test]# seq -s ' ' 1 5 50
1 6 11 16 21 26 31 36 41 46

(())只能运算整数;bc可以运算所有实数;
其中的-l表示导入运行计算所需包;bc是运算标识;
[root@Redis01 test]# a=1.2
[root@Redis01 test]# b=2.6
[root@Redis01 test]# sum=0
[root@Redis01 test]# ((sum=a+b))
[root@Redis01 test]# echo ${a}+${b}|bc -l
3.8
[root@Redis01 test]# echo 190+100|bc -l
290

整数计算推荐使用(()),因为性能比较好;
bc中间使用了管道,走了磁盘IO,性能不好;
[root@Redis01 test]# seq -s '+' 100
1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18+19+20+21+22+23+24+25+26+27+28+29+30+31+32+33+34+35+36+37+38+39+40+41+42+43+44+45+46+47+48+49+50+51+52+53+54+55+56+57+58+59+60+61+62+63+64+65+66+67+68+69+70+71+72+73+74+75+76+77+78+79+80+81+82+83+84+85+86+87+88+89+90+91+92+93+94+95+96+97+98+99+100
[root@Redis01 test]# seq -s '+' 100|bc -l
5050

反单引号内的内容当作语句执行;
单引号内的内容当作字符串;
[root@Redis01 test]# ((sum=`seq -s '+' 1000`))
[root@Redis01 test]# echo $sum
500500
[root@Redis01 test]# echo $((`seq -s '+' 1000`))
500500
[root@Redis01 test]# echo $((seq -s '+' 1000))
-bash: seq -s '+' 1000: syntax error: invalid arithmetic operator (error token is "'+' 1000")

for循环两种方式:
[root@Redis01 test]# sum=0
[root@Redis01 test]# for i in `seq 100`;do ((sum=${sum}+${i}));done
[root@Redis01 test]# echo $sum
[root@Redis01 test]# for((i=1;i<=100;i++));do ((sum+=${i}));done
[root@Redis01 test]# echo $sum

while的两种方式,注意每次需要坝变量赋值:
[root@Redis01 test]# sum=0
[root@Redis01 test]# i=1
[root@Redis01 test]# while [ $i -le 100 ];do ((sum+=i));((i++));done
[root@Redis01 test]# echo $sum

[root@Redis01 test]# sum=0
[root@Redis01 test]# i=1
[root@Redis01 test]# while ((i <= 100));do ((sum+=i));((i++));done
[root@Redis01 test]# echo $sum

Linux命令-基本变量类型及其运算的更多相关文章

  1. Linux命令的类型

    1.内建命令: 由shell程序自带的命令,最常见的有cd.pwd等. 使用type命令即可查看命令属于哪种,比如: #type cd cd is a shell builtin ————>看到 ...

  2. linux删除某类型文件的命令

    使用linux命令行,删除某目录下某类型的文件,如:删除.rar结尾的所有文件. 命令如下: find . -name "*.rar" -type f -print -exec r ...

  3. 我使用过的Linux命令之file - 检测并显示文件类型

    摘自:http://codingstandards.iteye.com/blog/804463 我使用过的Linux命令之file - 检测并显示文件类型 用途说明 file命令是用来检测并显示文件类 ...

  4. linux命令类型及执行顺序

    一 为什么要使用命令行   当初级Linux用户面对缺乏图形界面的Linux时很多人都会抱怨:为何要死守命令行?为什么不采用人机互交好.更简单的图形界面呢?事实上,图形界面在某些任务方面确实高效而且简 ...

  5. Linux命令之type - 显示命令的类型

    用途说明 type命令用来显示指定命令的类型.一个命令的类型可以是如下之一 alias 别名 keyword 关键字,Shell保留字 function 函数,Shell函数 builtin 内建命令 ...

  6. Linux命令格式、终端类型和获取帮助的方法

    Linux用户类型 Root用户:超级管理员,权限很大 普通用户:权限有限 终端 terminal 终端类型 物理终端:鼠标.键盘.显示器 虚拟终端:软件模拟出来的终端 控制台终端: /dev/con ...

  7. 03_Linux基础-文件类型-主辅提示符-第1提示符-Linux命令-内外部命令-快捷键-改为英文编码-3个时间-stat-其他基础命令

    03_Linux基础-文件类型-主辅提示符-第1提示符-Linux命令-内外部命令-快捷键-改为英文编码-3个时间-stat-{1..100}-du-cd-cp-file-mv-echo-id-she ...

  8. Linux 命令小记

    1. pidof 进程名 :获取进程的pid,例如 pidof memcached 得到5333 2. unset Shell变量 :取消设置一个shell变量,从内存和shell的导出环境中删除它, ...

  9. LINUX命令总结 -------来自 水滴娃娃 的CSDN

    LINUX命令总结 标签: LINUX命令总结 2014-01-27 15:54 41039人阅读 评论(1) 收藏 举报  分类: linux(1)  版权声明:本文为博主原创文章,未经博主允许不得 ...

随机推荐

  1. REdis Asynchronous AOF fsync is taking too long

    redis.conf中的no-appendfsync-on-rewrite默认值为no,表示在重写AOF文件或RDB文件时阻塞fsync. 如果重写AOF或RDB文件时长过长,则在日志中可以看到如下信 ...

  2. win7 ssh linux虚拟机(ubuntu12.04)

    环境: 1. 管理vmware Workstation8.0 2. Ubuntu 12.04.iso安装文件 3.Ssh登录软件putty 步骤 1.安装,安装linux系统时,在“硬件”里设置“网络 ...

  3. vector作为二维数组

    vector本来就是可以用来代替一维数组的,vector提供了operator[]函数,可以像数组一样的操作,而且还有边界检查,动态改变大小. 这里只介绍用它来代替二维的数组,二维以上的可以依此类推. ...

  4. mysql--user表

    mysql数据库 用例:mysql  mysql> show tables; +---------------------------+ | Tables_in_mysql | +------- ...

  5. 自兴人工智能 python特点了解

    计算机语言从语言执行分类来看,大概可分为编译型语言(如Java.c++)和解释型语言(如python.javascript) 1.编译型语言  java   c++ 编写源代码.java ---> ...

  6. Python编程练习:编程实现恺撒密码

    问题描述:凯撒密码是古罗马凯撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下: 原文:A B C D ...

  7. 程序员工作 996 生病 ICU ?

    阅读本文大概需要 2 分钟. 说实话,一般平时这个点我已经睡着了,今天准备好的文章也会准时在凌晨推送给大家.睡前看篇关于强制 996 加班的消息,里面有句口号还挺溜,上班996,下班ICU,为此还特意 ...

  8. 吴恩达机器学习笔记19-过拟合的问题(The Problem of Overfitting)

    到现在为止,我们已经学习了几种不同的学习算法,包括线性回归和逻辑回归,它们能够有效地解决许多问题,但是当将它们应用到某些特定的机器学习应用时,会遇到过拟合(over-fitting)的问题,可能会导致 ...

  9. gdb调试的layout使用

    layout:用于分割窗口,可以一边查看代码,一边测试.主要有以下几种用法:layout src:显示源代码窗口layout asm:显示汇编窗口layout regs:显示源代码/汇编和寄存器窗口l ...

  10. js对象之XMLHttpReques对象学习

    背景:业务需求是,一个前端(手机和浏览器)HTML页面中有图片,按钮......,需要统计用户点击图片或者按钮的次数. 前端实现:通过一个js来统计HTML页面中所有的图片和按钮对象,并给每个对象赋予 ...