#!/bin/sh

1 取脚本参数

$# 参数个数
$0 当前脚本名
$1 第1个参数
$n 第n个参数
$* 所有参数
$@ 所有参数
$? 上个命令的状态
$$ 当前pid

取当前目录

$(cd `dirname $0`; pwd)

2 日期

$ date
Wed Mar 27 17:27:18 CST 2019
$ date +"%Y-%m-%d %H:%M:%S"
2019-03-27 17:28:27
$ date +"%Y-%m-%d %H:%M:%S" --date="-1 day"
2019-03-26 17:29:10
$ date +%s
1553678982

$ date -d "-1day2019-05-20" +%Y%m%d
20190519

$ date -d"$(date -d"1 month" +"%Y%m01") -1 day" +"%Y%m%d"
20190531

$ date +"%Y%m$(cal|sed 'N;${s/.* //;P;d};D')"
20190531

3 字符串替换

将变量var中的a全部替换成b

${var//a/b}
echo "$var"|awk 'gsub("a","b") {print $0}'
echo "$"|sed 's/a/b/'

4 字符串截取子串

var=hello
echo ${#var}
echo $var|awk '{print substr($0, 2, 3)}'
echo ${var:2}
echo ${var:2:3}

echo ${var#he}
echo ${var%lo}

echo ${var1:`echo $((${#var2}+1))`}

5 字符串split

数组(item本身不能包含空格)

str=${str//,/ }
for item in $str
do
echo $item
done

cut(cut: the delimiter must be a single character 分隔符只能为1个字符)

        i=1
while((1==1))
do
item=`echo $str|cut -d "," -f$i`
if [ "$item" != "" ]
then
((i++))
echo $item
else
break
fi
done

awk -F(索引位置只能硬编码)

$ echo $str|awk -F ',' '{print $1}

awk split

$ echo $str|awk '{split($0,arr,","); for (i in arr) {print arr[i]}}'

6 循环

字符串循环(空格分割)

var='1 2 3'
for var in $vars
do
echo $var
done

整数循环(从1到100)

for i in {1..100}
do
echo $i
done

自增id

i=0
for var in $vars
do
echo "$i $var"
((i=i+1))
done

while

#while true
while [ 1 -eq 1 ]
do
..
break/continue
..
done

7 字符串是否为空判断(相等、不等)

if [ -z "$var" ]
then
echo "var is empty"
fi

if [ -n "$var" ]
then
echo "var is not empty"
fi

if [[ "$var" = "" ]]
then
echo "empty"
fi

if [[ "$var" != "" ]]
then
echo "not empty"
fi

8 字符串包含判断

if [[ "$all" == *"$sub"* ]]; then

or

if [[ "$all" =~ "$sub" ]] ;then

9 整数比较判断

if [ $a -eq 0 ]
then
echo "a = 0"
fi

if [ $a -ne 0 ]
then
echo "a != 0"
fi

if [ $a -gt 0 ]
then
echo "a > 0"
fi

if [ $a -lt 0 ]
then
echo "a < 0"
fi

10 整数计算

echo $((2+1))

11 注释

单行注释

# comment

多行注释

<<'COMMENT'
comment1
comment2
...
COMMENT

12 文件和文件夹判断

if [ -d "/path/to/dir" ]
then
echo 'directory /path/to/dir exists'
else
echo 'directory /path/to/dir does not exists'
fi

if [ -f "/path/to/file" ]
then
echo 'file /path/to/file exists'
else
echo 'file /path/to/file does not exists'
fi

13 遍历文件夹

dir=/path/to/dir/
for file in $dir/*
do
echo $file
done

14 退出脚本

exit 0
exit 1

【原创】Linux基础之Shell脚本常用命令的更多相关文章

  1. linux 执行远程linux上的shell脚本或者命令以及scp 上传文件到ftp--免密码登陆

    场景:在linux A 上执行Linux B上的shell脚本和命令 步骤1.设置ssh免登陆 1.SSH无密码登录 # 本地服务器执行(A机器):生成密钥对 ssh-keygen -t dsa -P ...

  2. Shell 脚本常用命令

    Shell脚本是Linux开发工作中常用的工具,但是我一直没有找到一个适合自己的简明扼要的HandBook.在工作过程中整理了一下,贴在这里已备查看. 1           Shell中的特殊符号 ...

  3. Linux基础篇–shell脚本编程基础

    本章内容概要  编程基础  脚本基本格式  变量  运算  条件测试  配置用户环境 7.1 编程基础程序:指令+数据程序编程风格:   过程式:以指令为中心,数据服务于指令   对象式:以数据为中心 ...

  4. shell脚本常用命令汇总

    一.shell脚本概述和入门 (1)shell脚本是一个命令行解释器,它接收应用程序/用户命令,然后调用操作系统内核 (2)shell脚本的常用执行方式: 第一种:采用bash或sh+脚本的相对路径或 ...

  5. linux基础(4)-常用命令

    常用命令ls ls #查看当前目录下的文件和目录 ls -l #显示详细信息 ls -a #显示所有文件 ls -t #按修改时间排序 ls -S #按文件大小排序   常用命令pwd pwd #显示 ...

  6. linux常用命令(shell脚本常用命令)(grep、cut、sort、uniq、seq、tr、basename、dirname)

    本章命令: 1 2 3 4 5 6 grep cut sort uniq seq tr 1.grep 作用:过滤文本内容 选项 描述 -E :--extended--regexp 模式是扩展正则表达式 ...

  7. 【Linux基础学习】Ubuntu 常用命令大全

    一.文件目录类 1.建立目录:mkdir 目录名 2.删除空目录:rmdir 目录名 3.无条件删除子目录: rm -rf 目录名 4.改变当前目录:cd 目录名 (进入用户home目录:cd ~:进 ...

  8. Shell脚本常用命令简介

    格式化日期yyyy-mm-dd hh:mm:ss显示 date "+%Y-%m-%d %H:%M:%S" 将内容写入到新文件 echo "hello">a ...

  9. Linux基础学习笔记以及常用命令

    1.windows自带命令进入mysql所在磁盘   2.进入mysql安装目录的bin文件 D:\>cd D:\Program Files (x86)\mysql-5.5.25-winx64\ ...

随机推荐

  1. 学习go语言编程系列之定义变量

    package main import ( "fmt" "math") func main() { // 1. 定义变量名age,不初始化,使用对应类型的默认值 ...

  2. HTTP 错误 500.21 - Internal Server Error 处理程序“WebServiceHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”

    解决方案是 解决方案:只需要重新安装一下就可以了.在Frameworv4.0的目录中安装的程序以管理员权限重新运行一下就可以了. %windir%\Microsoft.NET\Framework\v4 ...

  3. SpringBoot系列: 单元测试

    SpringBoot 项目单元测试也很方便, Web项目中单元测试应该覆盖:1. Service 层2. Controller 层 本文前半部分讲解是一些测试基础配置. 对于Service和Contr ...

  4. interactivePopGestureRecognizer --- iOS侧滑的问题

    苹果一直都在人机交互中尽力做到极致,在iOS7中,新增加了一个小小的功能,也就是这个api:self.navigationController.interactivePopGestureRecogni ...

  5. Docker 容器启动 查看容器状态 - 四

    1.容器两种方式进行启动 一种是基于创建一个容器并启动 docker create docker start 另一种 使用 run 创建自动启动:是状态下的停止 启动 docker start ngi ...

  6. git常用命令(转载自用)

    转载自 阮一峰博客: http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html 一个码农博客: http://blog.gitor.org ...

  7. Coursera, Deep Learning 1, Neural Networks and Deep Learning - week3, Neural Networks Basics

    NN representation 这一课主要是讲3层神经网络 下面是常见的 activation 函数.sigmoid, tanh, ReLU, leaky ReLU. Sigmoid 只用在输出0 ...

  8. 搭建单机版的FastDFS服务

    一,原理讲解 FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,解决了大容量存储和负载均衡的问题.特别适合以文件为载体的 ...

  9. 基于Django框架对MongoDB实现增删改查

    在上一篇中,咱们已经实现了Scrapy框架爬取数据,并且存储到Mongodb数据库, 接下来呢,,,,,,,,,,,,, 咱们就要对这些数据进行操作. 目标:从Mongodb数据库取出数据,通过Dja ...

  10. python - 编程规范问题

    软件目录结构规范alex_老男孩:为什么要设计好目录结构?“设计项目目录结构”,就和“胆码编码风格”一样,属于个人风格问题.对于这种风格上的规范,一直都存在两种态度:    1.一类同学认为,这种个人 ...