一、免密交互

--stdin

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

如:passwd   --stdin   heruguo246

[root@localhost mnt]#    ---输入了修改heruiguo246用户密码为123456
passwd: all authentication tokens updated successfully.

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

如:echo  1234567 |passwd  --stdin   herugiu246

[root@localhost 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

[root@localhost mnt]# echo 1234567|passwd --stdin heruiguo246 &>/dev/null
[root@localhost mnt]#

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

三、记录错误信息

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

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

四、逻辑分割

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

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

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

双引号:

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

[root@localhost mnt]# a=5
[root@localhost mnt]# echo "你的值是:$a"
你的值是:5

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

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

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

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

单引号:

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

[root@localhost mnt]# a=centos
[root@localhost mnt]# echo '$a'
$a
[root@localhost mnt]#

(2)不允许\转义

六、read取值的用法

基本格式

read   变量名

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

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

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

[root@localhost mnt]# read -s -p "请输入密码:" passwd
请输入密码:
[root@localhost mnt]# echo $passwd
123456

shell学习(一)的更多相关文章

  1. shell学习总结之自定义函数

    shell学习总结之自定义函数 Myfun (){ echo -n "now i is $i " ! [ "$i" ] && exit ; ec ...

  2. SHELL学习笔记----IF条件判断,判断条件

    SHELL学习笔记----IF条件判断,判断条件 前言: 无论什么编程语言都离不开条件判断.SHELL也不例外.  if list then           do something here   ...

  3. shell学习笔记

    shell学习笔记 .查看/etc/shells,看看有几个可用的Shell . 曾经用过的命令存在.bash_history中,但是~/.bash_history记录的是前一次登录前记录的所有指令, ...

  4. shell学习指南-阅读笔记

    shell学习指南真不是刚开始学习shell应该看得书,虽然其中讲了简单的linux命令,shell语法等,但是每章也有些深入和生僻地方,我想如果我刚学shell看到这样的地方一定会头疼的要死.或许也 ...

  5. 【转】shell学习笔记(一)——学习目的性、特殊字符、运算符等

    1 学习shell的目的性 写之前我们先来搞清楚为什么要学shell,学习要有目的性 shell简单.灵活.高效,特别适合处理一些系统管理方面的小问题 shell可以实现自动化管理,让系统管理员的工作 ...

  6. Shell学习之结合正则表达式与通配符的使用(五)

    Shell学习之结合正则表达式与通配符的使用 目录 通配符 正则表达式与通配符 通配符 通配符的使用 正则表达式 正则表达式 正则表达式的使用 通配符 正则表达式与通配符 正则表达式用来在文件中匹配符 ...

  7. Shell学习之条件测试(四)

    Shell学习之条件测试 目录 逻辑测试 文件测试 数值比较 字符串比较 逻辑测试 格式: [ 表达式 ] 操作符 [ 表达式2 ] …… 命令1 操作符 命令2 …… 常用的操作符 ( 注意:-a和 ...

  8. Shell学习之环境变量配置文件(三)

    Shell学习之环境变量配置文件 目录 环境变量配置文件简介 环境变量配置文件作用 其他配置文件和登录信息 环境变量配置文件简介 环境变量配置文件简介 环境变量配置文件中主要是定义对系统操作环境生效的 ...

  9. Shell学习之Bash变量详解(二)

    Shell学习之Bash变量详解 目录 Bash变量 Bash变量注意点 用户自定义变量 环境变量 位置参数变量 预定义变量 Bash变量 用户自定义变量:在Bash中由用户定义的变量. 环境变量:这 ...

  10. Shell学习之Shell特性(一)

    Shell学习之Shell特性 目录 命令和文件自动补齐功能 命令历史记忆功能 history.上下键.!number.!string.!$.!! 别名功能 alias.unalias cp.~use ...

随机推荐

  1. dp乱写3:环形区间dp(数字游戏)

    状态: fmax[i,j]//表示前i个数分成j个部分的最大值 fmin[i,j]//表示前i个数分成j个部分的最小值 边界:fmax[i,1]:=(sum[i] mod 10+10) mod 10( ...

  2. 洛谷 P2542 [AHOI2005]航线规划 解题报告

    P2542 [AHOI2005]航线规划 题目描述 对Samuel星球的探险已经取得了非常巨大的成就,于是科学家们将目光投向了Samuel星球所在的星系--一个巨大的由千百万星球构成的Samuel星系 ...

  3. svn:重命名文件之后,不允许提交

    1.错误代码 org.apache.subversion.javahl.ClientException: Illegal target for the requested operation svn: ...

  4. 多线程(模拟买票)-----java基础知识总结

    这次的的问题引入的比较深入,如果看了这篇博客,不看下一篇,你会很懵逼. 代码: package com.day13.math; /** * 类说明 :模拟三个窗口同时售票 * @author 作者 : ...

  5. JavaScript中的两种全局对象

    这里总结的东西特别适合先学习c/c++, Java这类标准语言再学JS的童鞋们看,因为JS在程序执行之前就会初始化一个全局对象,这个全局对象到底是什么是跟JS程序运行环境有关的. 根据JavaScri ...

  6. git clone错误 fatal: early EOF fatal: index-pack failed

    最后用ssh的方式解决了,不用http https://blog.csdn.net/fastjack/article/details/79757520 用了以下的方法还是不行 今天想 clone 一下 ...

  7. git push --set-upstream

    我在本地建了一个分支wangxiao,开发完之后,提交代码 git add .git commit -m '注释'git push 出现下面的问题,这个意思是:当前分支没有与远程分支关联. 因此导致了 ...

  8. bzoj千题计划255:bzoj3572: [Hnoi2014]世界树

    http://www.lydsy.com/JudgeOnline/problem.php?id=3572 明显需要构造虚树 点属于谁管理分三种情况: 1.属于虚树的点 2.在虚树上的边上的点 3.既不 ...

  9. ASP.NET MVC学习(一)之路由篇Route

    什么是路由 通过[路由]配置,路由可以规定URL的特殊格式,使其达到特殊效果. 在ASP.NET MVC框架中,通过路由配置URL,使用户的URL请求可以映射到Controller下的action方法 ...

  10. 使用js获取浏览器地址栏里的参数

    用JS获取地址栏参数的方法(超级简单) 方法一:采用正则表达式获取地址栏参数:( 强烈推荐,既实用又方便!) function GetQueryString(name) { var reg = new ...