shell——shell输入输出

shell输入输出

echo命令

显示字符串

echo "It is a test"

显示不换行

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

显示结果定向至文件

echo "It is a test" > myfile

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

echo '$name\n'

显示命令执行结果

echo `data`
Thu Jul 24 10:08:46 CST 2014

printf 命令

printf 模仿C程序库(library)里的printf()程序。
printf命令的语法:

printf  format-string  [arguments...]

举例:

 1 #!/bin/bash
  2 
  3 printf "%-10s %-8s %-4s\n" 姓名 性别 体重kg
  4 printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234
  5 printf "%-10s %-8s %-4.2f\n" 杨过 男 48.6543
  6 printf "%-10s %-8s %-4.2f\n" 郭芙 女 47.9876

运行结果

姓名     性别   体重kg
郭靖     男      66.12
杨过     男      48.65
郭芙     女      47.99

格式替代符有:%s %c %d %f
%-10s指一个宽度为10个字符(-表示左对齐,没有则表示右对齐),任何字符都会被显示在10个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来。
%-4.2f指格式化为小数,其中.2指保留两位小数。

printf转义序列
序列说明
\a警告字符,通常为ASCII的BEL字符
\b后退
\c抑制(不显示)输出结果中任何结尾的换行字符(只在%b格式指示控制符下的参数字符串中有效),而且,任何留在参数里的字符、任何接下来的参数以及任何留在格式字符串中的字符,都被忽略
\f换页
\n换行
\r回车
\t水平制表位
\v垂直制表符
\一个字面上的反斜杠字符
\ddd表示1到3位数八进制的字符。仅在格式字符串中有效
\0ddd表示1到3位的八进制值字符

传递参数

可以在执行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

几个特殊字符用来处理参数:

参数处理说明
$#传递到脚本的参数个数
$*以一个单字符串显示所有向脚本传递的参数。
$$脚本运行的当前
$!后台运行的最后一个进程的ID号
$@返回所有的参数不过,参数每一个参数被分割成一个字符串
$-显示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, ∗ 等 价 于 传 递 " 123 " , 而 * 等价于传递"1 2 3",而 "123"@等价于"1" “2” “3”
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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值