您的位置:首页 > 运维架构 > Shell

【unix学习】shell编程—参数、流程控制、算数运算、函数

2017-11-04 19:03 363 查看
shell参数
符号说明

与 区别

变量赋值

shell脚本
if语句

case语句

循环

expr 算数表达

shell函数

shell参数

符号说明

echo $0
$1-$9 代表参数的位置,1代表第一个参数,,,,
$* 把全部参数当作一个字符串形式的参数,"$1 $2 … $n"的形式
$@ 把参数当作列表形式,与$*相同,"$1" "$2" … "$n" 的形式,注意引号的差别。
$# 参数的个数
$$ 运行的当前进程ID号
$? 显示上一个进程是否执行成功,成功执行返回0,执行不成功返回1
$! 后台运行的最后一个进程的ID号

$* 与 $@ 区别:
相同点:都是引用所有参数。
不同点:只有在双引号中体现出来。
假设在脚本运行时写了三个参数 1、2、3,,则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)。


$* 与$@ 区别

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

#结果#
1 2 3

for i in "$@"
do
echo $i
done

#结果#
1
2
3


变量赋值

[s14516@gdufs]$name="koo" #赋值之间别有空格
[s14516@gdufs]$echo name
name
[s14516@gdufs]$echo $name
koo


shell脚本

#! 告诉系统其后路径所指定的程序即是解释此脚本文件的 Shell 程序。

if语句

#!/bin/bash
read input
if [ $input = "gdufs" ]
then
echo "right"
else
echo "wrong"
fi


case语句

#!/bin/bash
hour=`date "+%H"`
case $hour in
[0-8]|19|2[0-3])
echo "good night"
;;
9|1[0-2])
echo "good morning"
;;
1[3-8])
echo "good afternoon"
;;
*) #表示其他情况
esac


循环

for name in zhangsan lisi wangwu
do
echo $name
done


expr 算数表达

1.四则运算

+ - \* / %
这小表达式两边需要有空格
[s14516@gdufs]$expr 4 \* 3


2.赋值表达式

[s14516@gdufs]$a=`expr 4 \* 3`
[s14516@gdufs]$echo $a
12


expr只支持整型运算

3.浮点型运算

[s14516@gdufs]$echo  4 \* 3.2 | bc


4.while循环

#!/bin/bash
read -p 'please input' n
i=1
while [ $i -le $n ]
do
echo $i
i=`expr $i + 1`
done


5.求和

#!/bin/bash
read -p 'please input: ' n
i=1
sum=0
while [ $i -le $n ]
do
sum=`expr $sum + $i`
i=`expr $i + 1`
done
echo $sum


shell函数

1.无参数函数

#!bin/bash

greet(){
echo 'hello'
}

greet


2.有参数函数

#!/bin/bash
greet(){
echo "hello, $1"
## $1 表示第一个参数,不需要在方法上写参数
}
read -p 'please input: ' name1 name2
greet $name1
greet $name2
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: