美文网首页
Shell简易记录

Shell简易记录

作者: 森码 | 来源:发表于2019-05-21 15:55 被阅读0次

这里主要记录一些Shell的常用语法,便于后期记忆和查找。

1. 变量的定义与输出

echo "Hello World"
# 定义变量时不能有空格
A=10
echo "A = $A"

echo
# 表示当前文件
echo $0
# 表示第一个传入的参数
echo "the first arg is $1"
# 表示第二个传入的参数
echo "the second arg is $2"

echo
# ? * #
# ? 表示上一条命令是否执行成功  0 表示成功
echo $? 
# * 表示所有的参数
echo $* 
# # 表示参数的个数
echo $# 
# 当前文件的绝对路径
echo $PWD


echo
# expr (expression)表达式的缩写,通过这个可以进行算术运算
num1=2
num2=3
# num3=2 + 3 如果要进行算术运算,必须要有空格与 『+』 分开 ,注意:这样直接赋值是错误的
echo $num1+$num2
echo $num1 + $num2
echo `expr $num1+$num2`
echo `expr $num1 + $num2`

2. 运算方式

# 算术运算方式
# 1. 使用$(())  $只是取值符
# 2. 使用$[]
# 3. 使用let命令
# 4. 使用expr外部程式
a=$(( 2 + 4 ))
echo $a
b=$[ 3 + 5 ]
echo $b
let c=7+8
echo $c
# 注意空格,推荐使用这种,多数环境是支持的
d=`expr 9 + 9`
echo $d

# 算术运算符
# + - * / % = == !=
# 关系型
# -eq 相等      -ne 不相等      
# -gt 大于(greater than)      -lt 小于(less than)
# -ge 大于等于(greater equal)     -le 小于等于(less equal)
# 布尔型
# ! 非      -o 或(or)     -a 与(and)
# 逻辑型
# && ||
# 字符串
# = 检测是否相等      != 检测是否不相等
# -z 检测字符串长度是否为0        -n 检测字符串长度是否 不 为0
# $ 检测字符串是否为空,不为空返回true
s1=""
s2="efg"
if (( $s1 = $s2 )) 
then
    echo "s1 equal s2"
else
    echo "s1 not equal s2"
fi

if [ -z $s1 ]
then
    echo "the length is 0"
else 
    echo "the length is not 0"
fi

3. if条件判断

# if(表达式); then
#     echo " < "
# else
#     echo " > "
# fi
if((100 > 200)); then
    echo " < "
else
    echo " > "
fi

# 一些常用的判断操作
# -f 判断文件是否存在
# -d 判断文件夹是否存在
# -eg 等于(整形比较)
# -ne 不等于比较
# -le 小于比较
# -ge 大于比较
# -a 双方都成立
# -o 单方成立

echo
DIR=$PWD/createDir
if [ -d $DIR ]
then
    echo "dir already exists"
else
    mkdir -p $DIR
    if(($? == 0)); then # 注意:括号是括号,表达式是表达式,表达式的一部分就是括号
        echo "create successd"
    else
        echo "create fail"
    fi
fi

4. for 循环

# for 变量 in 字符串
# do
#   语句
# done
for i in `seq 1 10`
do
    echo "$i"
done

# 累加从1到100
echo
j=0
for((i=1;i<=100;i++))
do
    j=`expr $j + $i`
done
echo "total is $j"

# 打印当前目录下的所有文件
echo $0
for i in `find $PWD -name "*.sh"`
do
    echo $i
done


# while 条件语句
# do
#   语句
# done
echo
i=0
while((i<10))
do
    i=`expr $i + 1`
    echo $i
done

echo
i=0
# 注意while当前行空格的位置,空格错一个都不能通过
while [[ $i -lt 10 ]]
do
    i=`expr $i + 1`
    echo "lt $i"
done

5. 函数

# 基本格式
# name(){
#     command
#     command2
# }
# 基本格式2
# [ function ] funname [()]{
#     action;
#     [return int;]
# }

function test(){
    echo "this is a function"
}

function test1(){
    # 实际上 $ 表示的是函数中的输入,可以理解为第一个形参,并非是外面的$1
    echo "this is input data : $1" 
}

test
test1 $1


# 比如:实现一个阶乘
t=1;
function factorial(){
    for((i=1;i<=$1;i++))
    do
        # t=$[ $i * $t ]
        t=`expr $i \* $t ` # 注意反斜杠
    done
    echo "$1 factorial is : $t"
}
factorial $1


# return test
function functionReturn(){
    read -p "please input a number: " num
    # 如果这里不定义返回值,如果执行成功会返回0,不成功则返回1-255之间的错误码
    # 但是:return 只能返回 0-255之间的值,如果要返回字符串或者大于255的值,也会溢出,这时你需要使用echo
    return $[ $num * 2 ]
}
functionReturn
echo "the return number is : $?"


# return test1
function functionReturn1(){
    read -p "please input a number: " num
    echo $[ $num * 2 ]
}
functionReturn1
# 这里的输出只能表示成功与否
echo "the return number is : $?" 
# 需要去函数的值
result=`functionReturn1`
echo "the return number is : $result"

6. 文件操作

# while read line
# do
#     echo $line
# done<文件名
while read line
do
    echo $line
done<$PWD/test.sh

相关文章

  • Shell简易记录

    这里主要记录一些Shell的常用语法,便于后期记忆和查找。 1. 变量的定义与输出 2. 运算方式 3. if条件...

  • HBase的Shell

    HBASE Shell的DDL操作 HBASE Shell的DML操作 获取一条记录 更新记录 HBase She...

  • 100 行 shell 写个 Docker

    作者:vivo 互联网运维团队- Hou Dengfeng 本文主要介绍使用shell实现一个简易的Docker。...

  • shell-sort 简易理解

    一个更好理解的希尔排序实现:将数组列在一个表中并对列排序(用插入排序)。重复这过程,不过每次用更长的列来进行。最后...

  • shell 记录

    1. &&、||

  • shell记录

    1.文件内容提取 去掉表头,取第一列,存入新文件tail -n +2 sig-genes-deseq2.txt |...

  • shell记录

    查看基本信息 都在 /proc 下cat /proc/cpuinfocat /proc/mtd 免breed更新路...

  • 【安全记录】反弹shell小记

    前言 本文记录反弹shell的一些注意事项,主要包括:常用反弹shell的payload,获得tty-shell,...

  • chrome中content_shell工程改造成多标签浏览器

    content_shell工程是基于Chromium里面的content api封装了一个简单的UI的简易浏览器。...

  • Shell脚本之杂项

    title: Shell脚本之杂项tags: shell编程, 杂项 记录一些学到的shell脚本里面的一些杂项(...

网友评论

      本文标题:Shell简易记录

      本文链接:https://www.haomeiwen.com/subject/deyjzqtx.html