shell 命令中变量与从定向的运用...

变量和重定向


变量和重定向应用到我们的 linux shell 脚本当中,在shell脚本当中起到关键性的作用,如果没有变量和重定向的应用我们写起脚本来就是非常困难的一件事:在我们的脚本当中无时无刻都会有他们的身影,熟练他们俩的使用方法,可使我们写脚本的效率以及效果达到事半功倍。

变量

预定义变量

$0    脚本名
$*    所有的参数
[email protected]    所有的参数
$#    参数的个数
$$    当前进程的 PID
$?    上一个命令的返回值 0表示成功
$!    上一个后台进程的PID 

bash 的预置变量理解

[[email protected] /test]# vim echo.sh
#!/bin/bash
echo "脚本名 $0"
echo "您输入所有的参数 $*"
echo "您输入所有的参数 [email protected]"
echo "您输入参数的个数 $#"
echo "您当前进程PID $$"
echo "上一个命令的返回值 $?"
echo "上一个后台进程PID $!"

变量输出结果

[[email protected] /test]# ./echo.sh who    #当前位置下执行脚本 "echo.sh",支配的命令是 “who”
脚本名 ./echo.sh
您输入所有的参数 who
您输入所有的参数 who
您输入参数的个数 1
您当前进程PID 63426
上一个命令的返回值 0
上一个后台进程PID 

数值判断

 #   -ne    -eq   -gt    -lt     -ge        -le
 #   不等   相等   大于   小于    大于等于   小于等于

重定向

  • 输入重定向:
    write: 给某个在线的终端/用户 发信息
    wall: 广播信息给所有 在线终端
    ctrl + D 发送信息

write: 给某个在线的终端/用户 发信息

[[email protected] /test]# write rosen1  #写给rosen1用户,如果换成zan3那就是单独发给zan3其他用户不会受影响
hello
hellox2

注意:针对的是,指定当前用户并且有在线登陆,或者终端;发送信息才会收到

[[email protected] ~]$
Message from [email protected] on pts/0 at 17:58 ...
hello
hellox2

wall: 广播信息给所有 在线终端

[[email protected] /test]# vim abc      #在文件abc里面写入要广播的内容
[[email protected] /test]# wall < /test/abc     #把abc文件里面的内容进行广播
[[email protected] /test]#
Broadcast message from [email protected] (Sat Aug xx xx:05:54 2018):
hello I am a radio wall

注意:广播针对的是所有用户以及终端。把文件写成脚本运用重复循环加上 “sleep” 睡眠可以无限循环广播,不过这样做实用性不大,不建议使用,看需求决定。

  • 输入重定向: << 追加输入
重写配置文件
[[email protected] /test]# vim abcd.sh  #写成脚本的形式
#!/bin/bash
cat >/test/abc <<EOF
hello
hellix2
EOF
[[email protected] /test]#
[[email protected] /test]# chmod u+x abcd   #加上执行权限方可执行
[[email protected] /test]# ./abcd.sh        #执行脚本abcd.sh
[[email protected] /test]# cat abc          #查看abc里面的内容
hello
hellix2

注意:重写配置文件多应用于网卡配置信息,他会把文件给清空之后在进行把内容写入。

  • 重定向输出: > 覆盖输出
    覆盖输出,会将之前的文件内容清空后再写入

    [[email protected] /test]# touch abcde  #创建一个 abcd 的文件
    [[email protected] /test]# vim abcde    #在文件 abcd 写写内容
    abcde
    abcde
    [[email protected] /test]# cat abc &gt; /test/abcde  #把文件 abc 里面的内容覆盖到文件 abcd 中
    [[email protected] /test]# cat abcde     #文件 abcd 中的内容就会被文件 abc 里面的内容所覆盖
    hello
    hellix2
  • 重定向输出: >> 追加输出
    追加输出,将信息追加到文件的尾部。采集信息的时候用的比较多
[[email protected] /test]# cat abc >> abcde   #把文件 abc 里面的内容追加到文件 abcd 中
[[email protected] /test]# cat abcde          #查看文件 abcd 就会发现新加的内容出现在原有文件内容的下方
hello
hellix2
hello
hellix2

在小小的实例当中带出重定向和变量的运用,这些知识点相对来说是比较繁琐而有枯燥,但是有对应的小实例的运用带出这些知识点。一起来尝试尝试吧,有趣又好玩~~~

原文地址:http://blog.51cto.com/13481789/2335250

时间: 2024-11-09 16:04:02

shell 命令中变量与从定向的运用...的相关文章

常用shell命令中你所不熟悉的参数

1.   ls: 类似于dos下的dir命令 ls最常用的参数有三个: -a -l -F. ls –a Linux上的文件以.开头的文件被系统视为隐藏文件,仅用ls命令是看不到他们的,而用ls -a除了显示一般文件名外,连隐藏文件也会显示出来. ls –l 该参数显示更详细的文件信息. ls –F 使用这个参数表示在文件的后面多添加表示文件类型的符号,例如*表示可执行,/表示目录,@表示连结文件,这都是因为使用了-F这个参数.但是现在基本上所有的Linux发行版本的ls都已经内建了-F参数,也就

Linux shell命令中expr

在Linux shell命令中expr虽然不是很起眼,但是它的作用是非常大的!到目前为止,我个人看来最大的作用就是两个——四则运算和字符串的操作. 先说四则运算,在Shell中四则运算不能简简单单的加减乘除,应该要写如下的格式: $val1=`$val2 - 1` 其中“=”后面用“`”包住表达式,这个符号在Shell中十分有用,是Tab键上面“~”的原来形式.可以用来将很多命令的结果保存到一个变量中去.接着就是运算符了,运算符的左右两边必须是空格,否则会出错. 接着是强大的字符串操作: 提取指

【转】shell命令中&gt;/dev/null 2&gt;&amp;1的实现原理

异步执行 exec("/alidata/server/php/bin/php /nas/wxdoctor/index.php App/Common/WordsPic/user_id/".$user_info['user_id']."/goods_id/".$goods_id."."/open_id/".$user_info['open_id']." > /dev/null 2>&1 &")

shell编程中变量的运算 (shell 06)

主要包括以下3中 字符串操作数学运算浮点运算 一.字符串操作 字符串的连接 连接字2个字符串不需要任何连接符,挨着写即可 长度获取 expr length "hello" expr length "$str" 变量名必须放在双引号里,否者语法错误 查找字符串中字符的位置 expr index "$str" CHARS 第一个是从1 开始的,查找不到返回 0 ,返回匹配到的第一个字符的位置 [[email protected] ~]# echo $

shell脚本中变量的递归使用--真实内存使用查看脚本

脚本中进行变量计算时,需要加一个[ ],在外面再套一个$ [[email protected] tmp]# cat real_mem_used01.sh #!/bin/bashTOTAL=`free -g|grep Mem |awk '{print $2}'`USED=`free -g|grep Mem |awk '{print $3}'`BUFFER=`free -g|grep Mem |awk '{print $6}'`CACHE=`free -g|grep Mem |awk '{print

shell脚本中变量$$、$0等的含义

$0 这个程式的执行名字$n 这个程式的第n个参数值,n=1..9$* 这个程式的所有参数,此选项参数可超过9个.$# 这个程式的参数个数$$ 这个程式的PID(脚本运行的当前进程ID号)$! 执行上一个背景指令的PID(后台运行的最后一个进程的进程ID号)$? 执行上一个指令的返回值 (显示最后命令的退出状态.0表示没有错误,其他任何值表明有错误)$- 显示shell使用的当前选项,与set命令功能相同[email protected] 跟$*类似,但是可以当作数组用 示例: 1 #!/bin

shell命令中;,&amp;,&amp;&amp;,|,||用法及区别

在linux运维过程中时常会执行多条命令,这样我们就需要多重命令方式进行处理 ;运算符 通过使用;来执行多条命令,例如: # cd /root/home;mkdir a1d4m;cd a1d4m/ &运算符 通过使用&来执行多条命令,例如: # cd /root/home&mkdir a1d4m&cd a1d4m/ &&运算符 有和的意思 # cd /root/home&&mkdir a1d4m 若cd /root/home执行完毕且正常执行

shell脚本中变量子串的常用操作

字符串操作 ${#string}输出字句的字符个数 ${string:position:length}输出$position开始的length长度的字符 ${string:position} [[email protected] scripts]# liuyifei="i like sanpan i like luo swimming" [[email protected] scripts]# echo ${#liuyifei} 33 [[email protected] script

* 和 ?在 shell 命令行中与在正则表达式中的区别

Linux 正则表达式 你有没有想过,在 shell 命令行中的 *,?和正则表达式中的*,?是否一样? 自打好多年前接触 DOS,就知道了* 和?这两个通配符(Wildcard),象 dir *.* 这样的命令也不知道敲了多少遍. 后来,开始用 Windows 3.1 这样的图形界面操作系统,命令行就就得越来越少了. 再后来,开始学习正则表达式,又开始接触 * 和 ? 这样的东西.在正则中它们被称为元字符(Meta Character). 再再后来,开始使用 Linux,于是又开始使用命令行,