笔记整理—shell脚本与常用符号

        首先,说明一下shell脚本的几种执行方式:

1.    ./xxx.sh
2.    sourch xxx.sh
3.    bash xxx.sh

        shell脚本为解释型语言,所以用不上编译器,而是使用的解释器。

        在shell脚本开头经常写有如:#!/bin/sh或#!/bin/bash等。此为解释器路径。实际上,在ubuntu上的/bin/sh是链接到dash解释器上的,其中‘#’相当于‘//’。

        sh为弱类型语言,没有像int,double一类的特定类型,变量名=“......”<-字符串,sh的“=”两边不能有空格。

        引用变量过程中,$变量名为格式。若引用了没有被定义的变量则会被认定为空。sh中单引号为全输出,双引号为可输出转译字符。

var="\$a\$"
echo $var    =>$a$
var="$a$"    其中$a为空变量也就是说该句为$
var='\$a\$'  =>\$a\$

        反引号可特指指令,例如:

PWD=`pwd`
echo $PWD    =>打印路径

MYPATH="`pwd`/include"
echo "MYPATH=$MYPATH"    =>打印路径+/include

        if的条件判断:

if [条件];then
    xxx
else
    xxx
fi

        if中的判断常用符号:

if [ -f xxx ];then
其中-f为判断是否存在文件
-d文件夹是否存在
"str1"="str2"字符串是否相等
-eq 数字是否相等    equal
-gt 大于           greater than
-lt 小于           less than
-ge 大于等于       greater or equal   
-le 小于等于       less or equal 
-z $str           字符串是否为空
-o 或              or

        简写if:

[-z $str] || echo "xxx"
若前真则不会读到后面的echo "xxx"部分,因为前真不会去走”或“后面的语句同c语言

-z认为 没有定义不等于空
&&同理
[-z $str] && echo "xxx"
若前假就不会读到后面的echo

$var 等同于${var}
但
${var} 不同于$var

echo $"{var}xxx"
{}将变量括了起来

        for循环的使用方式:

for 变量 in 条件<-集合
do
    xxx
done

for i in 1 2 3 4
do
    echo $i
done
打印1到4

        while的使用方式:

while [条件]
do
    xxx
done

eg:

i=1
while(($int<3))
do
    echo $i
    let "i++"  其中i++也可写作i=$(($i+1))
done

        echo的使用方式:

echo "text" > a.txt
创建一个a.txt文件并写入字符text

echo "text" >> a.txt
追加text字符串在a.txt文件的新一行

        case语句使用方式:

case $var in
值) xxx ;;
值) xxx ;;
esac

num=3
case $num in
    1)  echo '数字为 1';;
    2)  echo '数字为 2';;
    3)  echo '数字为 3';;
    4)  echo '数字为 4';;
    *)  echo '数字非 1 到 4 之间的数字';;
esac

        关于shell传参个数问题,在c语言中外部传参使用 ./a.out aa bb cc 其中argv0为a.out,argv1为aa,argv2为bb,argv3为cc,其中argc=4。但在shell中 source a.sh aa bb cc,$1为aa,$2为bb,$3为cc,则$#=3,为什么没有$0,原因是$0为bash也就是解释器名称。

        shell中的break是用于跳出循环的,$#与$1等值可用shift指令进行转换 :

echo $# $1
shift;    参数左移一组,也就是移出一组
echo $# $1

source a.sh aa bb cc 
输出:
3 aa
2 bb

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值