shell基本语法总结

shell文件开始要写#/bin/sh或#/bin/bash

但由于是两种不同的解释方法所以语法可能有差异,我选择了前者

1.字符串拼接,得到字符串长度,注意变量的赋值操作等号两侧不能加空格

#/bin/sh
str="abc"
getstr="${str}def"
echo $getstr
echo ${#getstr}

 

 2.字符串中查找字符

#/bin/sh
str="abcdefg"
val=`expr index "$str" d`
echo ${val}

注意这里数组的下标示从1开始而不是从0开始

3.数组的定义,修改值,访问全部值,打印数组大小

#/bin/sh
buf=(1 2 3 4 5)
buf[0]=6
echo ${buf[0]}
echo ${buf[@]}
echo ${#buf[@]}

4.使用传进来的参数,用法类似于给main函数传参

#/bin/sh
echo $0 $1 $2
echo $*
echo $#

 

$0为文件名,或者是命令本身,$1开始是命令之后传的参数

5.基本运算符,可以看出不能直接使用C的运算符来运算,要使用`expr`格式,且运算符两边要有空格

#/bin/sh
val=1+2
val2=`expr 1 + 2`
echo $val $val2

#/bin/sh
a=20
b=10
c=10
val=`expr $a + $b`
echo $val

val=`expr $a - $b`
echo $val

val=`expr $a \* $b`
echo $val

val=`expr $a / $b`
echo $val

if [ $c == $b ]
	then
	echo "c=b"
fi
if [ $a != $b ]
	then
	echo "a!=b"
fi
if [ $a -gt $b ]
	then
	echo "a>b"
fi
if [ $b -lt $a ]
	then
	echo "b<a"
fi
if [ $c -ge $b ]
	then
	echo "c>=b"
fi
if [ $c -le $b ]
	then
	echo "c<=b"
fi

 

6.检测键盘输入

#/bin/sh
echo "please input a string"
read str
echo -e "$str \n"

echo加上-e参数表示""把里的字符转义之后输出,所以\n才能输出成换行符

7.把命令的执行结果存起来

#/bin/sh
path=`pwd`
echo $path

8.printf输出

#/bin/sh
printf "name is %-10s sex is %-1s height is %4.2f\n" sjn nan 130.567

printf时在%s中设置-n可设置字符串的最小长度,-表示左对齐,n表示最小长度,若不足则用空格补齐,%4.2f表示保存到小数点后2位

9.检测文件是否存在 test -e

#/bin/sh
if test -e ./test.sh
	then
	echo "yes"
else
	echo "no"
fi

10.for循环和while循环

#/bin/sh
for val in 1 2 3 4 5
do
	echo $val
done

echo "input a str"
while read path
do
	echo "$path is your input"
	echo "try ctrl+c to break"
done

11case语句

#/bin/sh
echo "input a value"
while read val
do
	case $val in
		1) echo "1"
		;;
		2) echo "2"
		;;
		*) echo "not 1 or 2"
		;;
	esac
done

 

12.函数定义和传参,返回值的使用

#/bin/sh
fun(){
	a=$1
	b=$2
	val=`expr $a + $b`
	return $val
}

fun 5 6
res=$?
echo $res

注意这里函数的传参和之前讲的命令传参规则一样,函数返回值用$?来访问

13.在脚本中引用其他脚本的语法有两种,第一种“点+空格+文件名”,第二种“source+文件名”

. ./test1.sh
source ./test2.sh

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值