Shell 脚本完成练习02

一、变量赋值方式有哪些?

1.显示赋值

变量名=变量值

[root@localhost day2]# name=feifei
[root@localhost day2]# echo $name
feifei

2.read 命令

从键盘读入变量

read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量,用 IFS(内部字段分隔符)变量中的字符作为分隔符。VariableName (变量名)参数指定给每一个字段的值,由 VariableName (变量名)参数指定的以此类推,直到最后一个字段。 read 不跟变量:在执行read命令行时可以不指定变量参数.如果不指定变量,那么read命令会将接收到的数据放置在环境变量 $REPLY 中。

[root@localhost day2]# vim l6.sh
#!/bin/bash
read -p "Enter Numbers:"
echo $REPLY

一个或多个变量

read后面的变量var可以只有一个,也可以有多个,这时如果输入多个数据,则第一个数据给第一个变量,第二个数据给第二个变量,如果输入数据个数过多,则最后所有的值都给第一个变量。

[root@localhost day2]# vim l5.sh
#!/bin/bash
read -n 4 -p 请输入用户名:user
echo " "
id $user &> /dev/null || useradd $user

read命令常用参数
-p提示打印出一行提示语句
-n设置read命令计数输入的字符,当输入的字符数目达到预定数目时,自动退出,并将输入的数据赋值给变量
-t指定read命令等待输入的秒数
-s使read命令中输入的数据不显示在监视器上

3.使用命令行参数 ($1 $2 $3 ..) name=$1

4.使用命令的输入 username=$(whoami)

5. 从文件读取

#cut -d : -f1 /etc/passwd > /user.list
for user in $(cat /user.list)
do
        echo $user
done
while read user
do
        echo $user
done < user.list

二.$@和$*的区别?

  • $@ 把所有位置的参数当成一个单独的字段,如果没有位置参数,$@展开为空,空列表,如果存在一个位置参数,则$@相当于$1,如果有两个参数,则$@相当于$1 $2 等

    [root@localhost day2]# vim l4.sh
    #!/bin/bash
    set -- "I am" test command
    for i in "$@"
    do
            echo $i
    done
    

  • $* 把所有位置参数当成一个整体,如果没有位置参数,则"$''为空,如果有两个位置参数且IFS为空格时,$相当于$1 $2

    [root@localhost day2]# vim l3.sh
    #!/bin/bash
    set -- "I am" test command
    for i in "$*"
    do
            echo $i
    done
    [root@localhost day2]# bash l3.sh
    

三.算数运算命令有哪几种?

r=$((a*b))(()) 可以直接运算  运算结果需要通过变量接受
r=$[a*b]$[]  不能直接运算  运算结果需要通过变量接受     
let r=$a*$blet 可以直接运算     运算结果需要通过变量接受 
r=`expr $a \* $b`expr也可用字符串
r=`echo $a*$b | bc`bc表示直接输出结果,不加bc直接输出式子
declare -i  r=$a*$b明整形变量对数值进行运算
awk 'BEGIN {print 2+5*8}'提供正则表达式的匹配


四.定义变量url=https://blog.csdn.net/weixin_45029822/article/details/103568815
1)截取网站访问的协议

[root@localhost day2]# url=https://blog.csdn.net/weixin_45029822/article/details/103568815
[root@localhost day2]# echo ${url:0:5}
https

2)截取网站访问账号信息

[root@localhost day2]# echo ${url##*/}
103568815


五.写一个脚本要求传入用户参数,通过脚本判断该用户用户是否存在,如果存在这显示用户已存在,如果不存在则创建该用户给该用户设置密码为redhat,同时在终端输出用户成功创建。

  1. 先判断用户是否存在,存在显示用户已存在,不存在则添加

  2. 添加密码为Redhat

[root@localhost day2]# vim l8.sh
#!/bin/bash
id userff &> /dev/null && echo 用户已存在 || useradd userff && echo 用户已添加
echo "redhat" | passwd --stdin userff &> /dev/null

 此时输入密码 Redhat 登录用户

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值