linux 基础命令及脚本,【原创】Linux基础之Shell脚本常用命令

#!/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

doecho$itemdone

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

i=1

while((1==1))doitem=`echo $str|cut -d "," -f$i`if [ "$item" != ""]

then

((i++))

echo$item

else

breakfi

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

多行注释

<

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值