shell重温---基础篇(参数传递&echo命令)

    经过前两天的学习,关于shell的基础算是知道的一般般啦,最起码不算是小白了(纯属意淫)。今天就来点干货哈。

  首先是运行shell脚本时的参数传递。脚本内获取参数的格式为$n。n代表了一个数字,例如1,就是脚本执行的第一个参数,2,就是脚本执行的第二个参数,以此类推哈。举个栗子($0是执行的文件名称):

#!/bin/bash

echo "Shell 传递参数实例!";
echo "执行的文件名:$0";
echo "第一个参数为:$1";
echo "第二个参数为:$2";
echo "第三个参数为:$3";

    运行上面的代码的结果就是:

$ chmod +x test.sh 
$ ./test.sh 1 2 3
Shell 传递参数实例!
执行的文件名:./test.sh
第一个参数为:1
第二个参数为:2
第三个参数为:3

    另外呢,还有几个特殊的字符来处理参数:

参数处理说明
$#传递到脚本的参数个数
$*以一个单字符串显示所有向脚本传递的参数。
如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
$$脚本运行的当前进程ID号
$!后台运行的最后一个进程的ID号
$@与$*相同,但是使用时加引号,并在引号中返回每个参数。
如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
$-显示Shell使用的当前选项,与set命令功能相同。
$?显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。

    来个实例哈:

#!/bin/bash

echo "Shell 传递参数实例!";
echo "第一个参数为:$1";

echo "参数个数为:$#";
echo "传递的参数作为一个字符串显示:$*";

    运行结果:

$ chmod +x test.sh 
$ ./test.sh 1 2 3
Shell 传递参数实例!
第一个参数为:1
参数个数为:3
传递的参数作为一个字符串显示:1 2 3

    其中呢,$*与$@都是用来引用所有的参数的,它们之间的不同点只有在双引号中才能体现出来。假设在脚本运行的过程中传入了三个参数,1、2、3,则“*”就等价于“1、2、3”,相当于传递了一个参数,而“@”等价于“1”,“2”,“3”,相当于传递了三个参数。这是需要各位看官注意一下的。那么就来个实例看看吧:

#!/bin/bash

echo "-- \$* 演示 ---"
for i in "$*"; do
    echo $i
done

echo "-- \$@ 演示 ---"
for i in "$@"; do
    echo $i
done

    执行上面的代码,输出的结果就是:

$ chmod +x test.sh 
$ ./test.sh 1 2 3
-- $* 演示 ---
1 2 3
-- $@ 演示 ---
1
2
3

    好啦,这个参数就到这里了。然后就是echo这个比较常见的命令了。phper对这个是比较熟悉的,它是用来输出字符串的,效果呢,差不多,但是它可以执行命令,废话不多说,大家看一下实例:

    echo的命令格式就是:

echo string

    首先,展示普通字符串:

echo "It is a test"

    这里的双引号是完全可以忽略的,只不过本人习惯性的操作哈,结果就是:

echo It is a test

    再来展示转义字符:

echo "\"It is a test\""

    看一下结果:

"It is a test"

    变量呢(read命令从标准输入中读取一行,并把输入行的每个字段的值指定给shell变量):

#!/bin/sh
read name 
echo "$name It is a test"

    输出的结果就是:

[root@www ~]# sh test.sh
OK                     #标准输入
OK It is a test        #输出

    还可以显示换行:

echo -e "OK! \n" # -e 开启转义
echo "It it a test"

    看一下输出:

OK!

It it a test

    再来显示不换行的:

#!/bin/sh
echo -e "OK! \c" # -e 开启转义 \c 不换行
echo "It is a test"

    结果就是:

OK! It is a test

    echo还可以显示结果定向至文件:

echo "It is a test" > myfile

    还能原样输出字符串,不进行转义或取变量(用单引号):

echo '$name\"'

    运行的结果就是:

$name\"

    最主要的就是echo可以显示命令执行的结果(以date命令为例):

echo `date`
    显示的结果为(注意:这里使用的是反引号·,而不是单引号,在Esc键下面,结果显示当前时间):

Thu Jul 24 10:08:46 CST 2014
    OK,今天的笔记就记录到这里了,明天继续分享别的命令工具,弱弱的说一句哈:本人纯属小白,分享的仅仅是笔记,各位看官勿喷哈。。。

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luyaran

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值