这两天笔记略少,因此合二为一了。
根据实际练习中遇到的问题,找到了以下知识点,下面放几个知识点地址记录下。
linux命令中各种括号的用法:http://www.javashuo.com/article/p-rxybmeuc-mc.html
脚本执行方法:https://www.itdaan.com/blog/2015/09/08/5933daea7166e0f9aff1bfcb72c6babd.html
关于空格知识点:https://blog.csdn.net/dream_of_grass/article/details/122150044
问题1:文件测试语句执行后为何通过echo ? 返回执行结果?答: ?返回执行结果? 答: ?返回执行结果?答:?是上一回命令执行后的返回值,但并不是命令执行的过程而是结果,成功则为0,失败则是1或2。
问题2:测试语句易出错原因?
答:注意加空格,[ 命令 ]中括号和命令之间需要加空格,命令中也需要加,例如:
[$USER = root ]
问题3:
[root@linuxprobe ~]# vim addusers.sh
#!/bin/bash
read -p "Enter The Users Password : " PASSWD
for UNAME in `cat users.txt`
do
id $UNAME &> /dev/null
if [ $? -eq 0 ]
then
echo "$UNAME , Already exists"
else
useradd $UNAME
echo "$PASSWD" | passwd --stdin $UNAME &> /dev/null
echo "$UNAME , Create success"
fi
done
为什么
N
A
M
E
可以逐个读取用户名?答:暂未查到结果,以后补充。
4
、脚本内定义的变量,终端为合适呢么不能用?答:
l
i
n
u
x
特性,脚本内定义的变量终端不可以使用。
5
、
l
i
n
u
x
内
T
I
M
E
S
=
NAME可以逐个读取用户名? 答:暂未查到结果,以后补充。 4、脚本内定义的变量,终端为合适呢么不能用? 答:linux特性,脚本内定义的变量终端不可以使用。 5、linux内TIMES=
NAME可以逐个读取用户名?答:暂未查到结果,以后补充。4、脚本内定义的变量,终端为合适呢么不能用?答:linux特性,脚本内定义的变量终端不可以使用。5、linux内TIMES=TIMES+1为什么执行失败,
答:不加括号,linux默认为字符串,加(())才可以运算。
(expr命令的英文全称是“expression”,即是表达式的意思,作用是一个命令行的计数器,常用于在UNIX/LINUX系统中求表达式变量的值,一般用于整数值,也可用于字符串。)
[root@linuxprobe ~]# TIMES=1
[root@linuxprobe ~]# echo $TIMES
1
[root@linuxprobe ~]# TIMES=$((TIMES+1))
[root@linuxprobe ~]# echo $TIMES
2
[root@linuxprobe ~]# TIMES=$(($TIMES+1))
[root@linuxprobe ~]# echo $TIMES
3
[root@linuxprobe ~]# TIMES=$[$TIMES+1]
[root@linuxprobe ~]# echo $TIMES
4
##例子2 expr用法
[root@linuxprobe ~]# TIMES=1
[root@linuxprobe ~]# echo $TIMES
1
[root@linuxprobe ~]# TIMES=$[ `expr $TIMES+1` ]
[root@linuxprobe ~]# echo $TIMES
2
[root@linuxprobe ~]# TIMES=$[ `$TIMES+1` ]
bash: 2+1: command not found...
Failed to search for file: Cannot update read-only repo
[root@linuxprobe ~]#
## expr用法
[root@linuxprobe ~]# TIMES=1
[root@linuxprobe ~]# echo $TIMES
1
[root@linuxprobe ~]# TIMES=`expr $TIMES + 1`
[root@linuxprobe ~]# echo $TIMES
2
[root@linuxprobe ~]# TIMES=$[ `expr $TIMES+1` ]
[root@linuxprobe ~]# echo $TIMES
3
[root@linuxprobe ~]# TIMES=$[ `expr $TIMES + 1` ]
[root@linuxprobe ~]# echo $TIMES
4
[root@linuxprobe ~]# TIMES=`expr $TIMES+1`
[root@linuxprobe ~]# echo $TIMES
4+1
[root@linuxprobe ~]#
##此处出现问题:TIMES=`expr $TIMES+1`和TIMES=`expr $TIMES + 1`区别?
##为什么“+”两侧没空格是字符串,有空格是表达式?
答:expr表达式中的运算符两边都需要有空格,否则运算无法进行
笔记照片: