Shell脚本常见用法列举

前言

最近在复习shell脚本的相关知识,本文列举了一些在shell脚本中用得到的一些基础语法。

1:打印常见内部变量和环境变量值

shell中常用变量介绍

$0脚本名
$n第n个参数,n=1,2,3...
$*所有参数列表(视为一个整体,不包括脚本名)
$@所有参数列表(独立字符串、不包括脚本名)
$#参数个数(不包含脚本名)
$$当前进程PID
$!后台运行的最后一个进程PID
$?执行上一个指令的返回值,如果为0,证明上一个命令正确执行
#1:打印一些变量
echo $#
echo $0
echo $1
echo $$
echo $?
echo $!
echo "hello world"
echo $HOME
echo $PWD

 2:$@和$*之间的区别

#2:比较$@和$*
echo $@
echo $*
for var in "$@"
do 
	echo $var
done

for val in "$*"
do
	echo $val
done

可以看到$@和$*不加“”括起来是没有区别的,当用“”括起来之后,$@会将参数独立看待,而$*会将全部参数视为一个整体。

3:自定义变量,将命令执行的结果返回给变量

在自定义一个变量的时候“=”两端不要加空格,可以将shell指令的返回值传给变量

#3:自定义变量,定义的时候不要加空格,将命令的结果返回给变量
A=100
echo "A = $A"
B=$(pwd)
echo $B

4:运算符,实现加减乘除简单算数操作

将表达式用[]括起来后里面的语句和正常的加减乘除操作相同

#4:运算符,实现加减乘除操作
SARFF=$[1200+4]
echo $SARFF
echo $[$1*$2]

5:if条件判断,字符串(=),数值比较(-lt -gt -le -ge -eq -ne),文件权限(-r -w -x ),文件、目录是否存在,是否为一个普通文件( -f -d -e)

shell脚本目录下的文件和目录

注意if语句的中括号两端要有空格 ,否则会报错

#5:条件判断
if [ "ok100" = "ok" ]
then 
	echo "equal"
fi

if [ 30 -gt 20 ]
then
	echo "greater than"
fi

if [ -r $0 ]
then 
	echo "$0 can read"
fi

if [ -w $0 ]
then 
	echo "$0 can write"
fi

if [ -x $0 ]
then 
	echo "$0 can execute"
fi

if [ -e 1.txt ]
then 
	echo "1.txt exists"
fi

if [ -d dir ]
then 
	echo "dir exists"
fi

if [ -f 1.txt ]
then 
	echo "1.txt is a normal file"
fi

6:流程控制

实现C语言中的if else 语句

#6:流程控制
if [ $1 -gt 60 ]
then 
	echo "$1 greater than 60"
elif [ $1 -le 60 ]
then
	echo "$1 little equal 60"
fi

7:循环语句(for和while)

for循环和while循环都是实现1加到100的和

#7:for循环
SUM=0
for((i=1;i<=100;i++))
do
	SUM=$[$SUM+$i]
done
echo "SUM = $SUM"

#while循环
j=0
NUM=0
while [ $j -le 100 ]
do
	NUM=$[$NUM+$j]
	j=$[$j+1]
done
echo "NUM = $NUM"

 

8:从控制台输入数据,C语言中scanf函数功能

使用read来实现输入功能,-p后的内容是提示信息,-t可以限制输入参数的时间

#8:从控制台获取参数,实现scanf作用
read -t 5 -p "input a num" NUM2
echo "you input NUM2 = $NUM2"

在限制时间5s中之内输入数据 

超过5s还未输入数据

9:函数的简单使用

#9:自定义函数
function getAdd(){
 	SUM=$[$n1+$n2]
 	echo "SUM = $SUM"
}

read -p "input first num" n1
read -p "input second num" n2

getAdd $n1 $n2

定义函数要用function关键字,函数功能是实现求两数的和

10:逻辑与、或、非

//逻辑与
if [ 30 -gt 20 ] && [ 10 -eq 20 ]
then
    echo "true"
else
    echo "false"
fi

//逻辑或
if [ 30 -gt 20 ] || [ 10 -eq 20 ]
then
    echo "true"
else
    echo "false"
fi

//逻辑非
if ! [ -r temp.txt ]
then
    echo "true"
else
    echo "false"
fi

 

总结

本文只涉及了shell脚本的一小部分内容,目的是为了能够使用shell脚本实现一些简单的功能。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

门牙会稍息

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值