SHELL编程入门

SHELL编程入门

1.语法规则

变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写;
等号两侧不能有空格,衍生规则就是变量声明时必须初始化;
在bash中,变量默认类型都是字符串类型,无法直接进行数值运算;
变量的值如果有空格,需要使用双引号或单引号括起来
变量名区分大小写;

2.特殊变量

$n
n是数字,$0代表当前脚本名称。从$1开始代表对应的脚本参数。从${10}开始数字需要使用{}括起来。
$#
返回参数的个数。
$*
$@
都能够返回全部参数,但是只有在循环中且放在引号中能够体现出它们的区别。

#! /bin/bash
echo "$0  $1  $2"

[root@localhost ~]# ./myshell.sh 参数1 参数2 参数3
./myshell.sh  参数1  参数2
[root@localhost ~]# 
#! /bin/bash
echo "$0  $1  $2"
echo $#
echo $*
echo $@

[root@localhost ~]# ./myshell.sh 参数1 参数2 参数3
./myshell.sh  参数1  参数2
3
参数1 参数2 参数3
参数1 参数2 参数3
[root@localhost ~]# 

$?
返回上一条命令的执行结果

3.运算符

Shell的运算表达式的语法如下: ( ( 表达式 ) ) 或 ((表达式))或 ((表达式))[表达式]

[root@localhost ~]# 
[root@localhost ~]# echo $((30+20))
50
[root@localhost ~]# echo $[(1+2)/4]
0
[root@localhost ~]# 

4.条件判断

语法

写法1:test 条件表达式
写法2:[ 条件表达式 ]
条件表达式前后有空格
空字符串视为false,非空字符串视为true

#! /bin/bash
test 5 -gt 3

# 获取上一条语句的执行结果
echo '5>3?' $?

test 5 -lt 3
echo '5<3?' $?

[ 5 -gt 3 ]
echo '[5>3]?' $?

[ 5 -lt 3 ]
echo '[5<3]' $?

file1=my_condition.sh
[ -e $file1 ]
echo '是否存在文件'$file1 $?

[ -w $file1 ]
echo '当前用户是否可以修改文件'$file1 
echo $?

[root@localhost ~]# ./my_condition.sh 
5>3? 0
5<3? 1
[5>3]? 0
[5<3] 1
是否存在文件my_condition.sh 0
当前用户是否可以修改文件my_condition.sh
0
[root@localhost ~]# 

5.流程控制

三元运算

[root@localhost ~]# [ 5 -gt 3 ] && echo '5>3' || echo '5<3'
5>3
[root@localhost ~]# 

if判断

  1 #! /bin/bash
  2 if [ 5 -gt 3 ]
  3   then
  4     echo '5>3'
  5 elif [ 5 -eq 3 ]
  6   then
  7     echo '5=3'
  8 else
  9     echo '5<3'
 10 fi

[root@localhost ~]# ./my_if.sh 
5>3
[root@localhost ~]# 

case判断

#! /bin/bash
money=99.9
case $money in
10)
echo 10
;;
20)
echo 20
;;
*)
echo other
;;
esac

[root@localhost ~]# ./my_case.sh 
other
[root@localhost ~]# 

for循环

for in 循环

#! /bin/bash
# 简单for循环
for (( i=1;i<=5;i++ ))
do
  echo '简单for循环'$i
done

# 从外部传入循环长度
len=$1
for(( i=1;i<=len;i++ ))
do
 echo '从外部传入循环长度'$i
done

# for in 循环
for i in "$*"
do
  echo 'for in *'$i
done

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

[root@localhost ~]# ./my_for.sh 4 5 6 2
简单for循环1
简单for循环2
简单for循环3
简单for循环4
简单for循环5
从外部传入循环长度1
从外部传入循环长度2
从外部传入循环长度3
从外部传入循环长度4
for in *4 5 6 2
for in @4
for in @5
for in @6
for in @2
[root@localhost ~]# 

while循环

#! /bin/bash
sum=0
i=1
while [ $i -le 10 ]
do
 sum=$[$sum+$i]
 i=$[$i+1]
done
echo $sum

[root@localhost ~]# ./my_while.sh 
55
[root@localhost ~]# 

6.函数

==Shell 编程中要求函数的返回值只能是整数。并且只能通过 $? 方式获得。可以显示加:return 返回,如果不加,将以最后一条命令运行结果(这个运算结果可以表示true或者false,以及执行成功或者执行失败),作为返回值。return 后跟数值 n(0-255)。 ==

#! /bin/bash
function test(){
echo $2
return $1
}

test 11 'hello'
echo '返回值是'$?

[root@localhost ~]# ./my_func.sh 11 'hello'
hello
返回值是11
[root@localhost ~]# 

7.获取脚本外部数据

通过$1 $2 …
通过read读取用户输入

#! /bin/bash
read -t 10 -p '请输入:' name
echo $name

[root@localhost ~]# ./my_read.sh 
请输入:hello
hello
[root@localhost ~]# 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值