一、变量赋值方式有哪些?
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*$b | let 可以直接运算 运算结果需要通过变量接受 |
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,同时在终端输出用户成功创建。
-
先判断用户是否存在,存在显示用户已存在,不存在则添加
-
添加密码为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 登录用户