shell脚本基础命令学习

Posted *平凡*随风舞

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本基础命令学习相关的知识,希望对你有一定的参考价值。

shell的作用是解析用户的指令,将shell指令按照特定的流程,组合形成脚本。

查看当前系统shell版本:

编写一个简单的shell脚本后,可以使用下面几种方法来执行:

1,使用chmod给脚本增加x权限,如:chmod +x test.sh

2,/bin/sh 或者 /bin/bash 执行脚本(会创建子进程)

3,source ./test.sh 脚本执行

4,小括号方式,会创建子进程

 

环境变量,可以直接设置,例如var=100,使用unset var可以删除

 

通配符:

*      匹配一个或多个任意字符

?      匹配一个任意字符

[若干字符]  匹配括号内任意一个字符

 

命令代换:

小括号:

 

算术转换:

进制转换:

转义字符和特殊字符:

 

条件分支:

$? 代表返回值0为真,1为假

test 或者 [] 可以作为表达示判断

gt(大于),lt(小于),eq(等于),ne(不等于),le(小于等于),ge(大于等于)

 括号判断,-f是普通文件,-d是文件夹,-z判断字符串是否为空

 

逻辑判断:

逻辑非 !

逻辑与 -a

逻辑或 -o

如:[ -f a.txt -a -d a.txt ]

要注意括号两边的空格,如果没有会出错

 

if分支语句:

echo "are you boy?"
read yy
if [ "$yy" = "yes" ];then
    echo "you are a boy"
elif [ "$yy" = "no" ]
    echo "you are a girl"
else
    echo "idk"
fi

  case分支语句:

echo "are you a boy?"
read yy

case "$yy" in
    y|yes|YES)
        echo "you are a boy";;
    [nN]*)
        echo "you are a girl";;
    *)
        echo "idk"
        exit 1;;
esac

  for循环语句:

for i in x y z
do
    echo "$i"
done

  while循环语句:

echo "please input your passwd"
read yy

while [ "$yy" != "123" ];do
    echo "sorry,try again"
    read yy
done

echo "login success"

  计算1+2+3+。。。。100求和:

sum=0
i=1

while [ $i -lt 101 ];do
    sum=$[sum+i]
    i=$[i+1]
done

echo $sum

  位置参数和特殊变量:

$0             相当于C语言main函数的argv[0]
$1、$2...    这些称为位置参数(Positional Parameter),相当于C语言main函数的argv[1]、argv[2]...
$#             相当于C语言main函数的argc - 1,注意这里的#后面不表示注释
$@             表示参数列表"$1" "$2" ...,例如可以用在for循环中的in后面。
$*             表示参数列表"$1" "$2" ...,同上
$?             上一条命令的Exit Status
$$             当前进程号

  函数的使用:

foo(){
    echo "$0 - $1"
}

echo "start call foo"
foo 11 22
echo "end call"

  远程文件传送补充:

scp 1.txt ubuntu@192.168.11.11:/home/ubuntu

  

 

以上是关于shell脚本基础命令学习的主要内容,如果未能解决你的问题,请参考以下文章

shell脚本基础命令学习

shell脚本的基础学习

项目09 Shell脚本基础

linux学习笔记--工程师技术:shell脚本基础

shell脚本基础学习(转)

shell脚本编程学习笔记-shell脚本编程基础介绍