shell学习

Posted 凉生墨客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell学习相关的知识,希望对你有一定的参考价值。

一、免密交互

--stdin

 1、从标准输入读取字符串

如:passwd   --stdin   heruguo246

[[email protected] mnt]# passwd --stdin heruiguo246
Changing password for user heruiguo246.
123456    ---输入了修改heruiguo246用户密码为123456
passwd: all authentication tokens updated successfully.

2、可以从键盘,也可以从另一个命令给出

如:echo  1234567 |passwd  --stdin   herugiu246

[[email protected] mnt]# echo 1234567 | passwd --stdin heruiguo246
Changing password for user heruiguo246.
passwd: all authentication tokens updated successfully.

这一次就没有在手动输入密码了,完全脚本实现。

二、忽略无关输出

黑洞设备/dev/null

只能写入,不能读出的单向文件,存放到其中的数据都会丢失。

用法:可执行语句  &>/dev/null

echo   1234567|passwd  --stdin  heruiguo246 &>/dev/null

 

[[email protected] mnt]# echo 1234567|passwd --stdin heruiguo246 &>/dev/null
[[email protected] mnt]#

 

注意:&和>以及>和/dev/null之间没有空格,否则要报错

三、记录错误信息

用法:可执行语句    2>/路径/日志文件名

如:sh  /mnt/adduser.sh  2>/mnt/adderror.log

四、逻辑分割

1、||  逻辑关系为“或者”,任何一条命令执行成功都符合期望,只有在前面的命令执行失败时,后面的命令才会执行。

如:id   test  || useradd   test    --表示当test用户不存在时,创建一个用户。

 

五、双引号和单引号的区别

双引号:

(1)在双引号中可以用$扩展,来表示变量,如:

[[email protected] mnt]# a=5
[[email protected] mnt]# echo "你的值是:$a"
你的值是:5

(2)出现特殊字符时,可以用\来表示转义,\t表示制表符、\n表示换行符,如:

[[email protected] mnt]# a="a\tb\tc\td\ne\tf\tg\th"
[[email protected] mnt]#
[[email protected] mnt]# echo -e $a     -e参数表示解析特殊转义符
a  b  c  d
e  f   g  h

(3)当变量值不包括空格、制表符、双引号通常被省略,如:

[[email protected] mnt]# a=centos6.5
[[email protected] mnt]# b=$a server
-bash: server: command not found
[[email protected] mnt]# b="$a server"
[[email protected] mnt]# echo $b
centos6.5 server

单引号:

(1)所有字符串均视为字符本身(无特殊)如:

[[email protected] mnt]# a=centos
[[email protected] mnt]# echo ‘$a‘
$a
[[email protected] mnt]#

(2)不允许\转义

六、read取值的用法

基本格式

read   变量名

read   -p  “提示信息”    变量名

[[email protected] mnt]# read name
123
[[email protected] mnt]# echo $name
123
[[email protected] mnt]#
[[email protected] mnt]# read -p "请输入用户名:" name
请输入用户名:xiaoming
[[email protected] mnt]# echo $name
xiaoming

静默取值加-s在输入密码时不显示在屏幕上

[[email protected] mnt]# read -s -p "请输入密码:" passwd
请输入密码:
[[email protected] mnt]# echo $passwd
123456

 
































以上是关于shell学习的主要内容,如果未能解决你的问题,请参考以下文章

shell学习

shell脚本学习总结

shell的学习

Shell学习:理解Shell

Shell学习:理解Shell

Shell脚本(学习笔记1)