study5-shell命令

Shell echo 命令

Shell 的 echo 命令与PHP的 echo 命令类似,都是用于字符串输出。命令格式:

echo string

1.显示普通字符串

echo "It is a test"

这里的双引号万全可以省略,与上面的示例效果一样

echo lt is a test

2.显示转义字符

echo "\"It is a test\""
echo  \"It is a test\"

结果为:
"It is a test"
"It is a test"

3.显示变量

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

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

name 接收标准输入的变量,结果将是:

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

4.显示换行

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

输出结果:

OK \n
OK!

It is a test

5.显示不换行

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

显示结果

OK! It is a test

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

echo '$name\"'

输出结果:
$name\"

7.显示命令执行结果

echo `date`

输出结果:
2020年 08月 12日 星期三 16:32:50 CST

 

Shell printf 命令

printf 命令模仿 C 程序库里面的的printf() 程序。

printf 命令的语法:

printf  format-string  [arguments...]

参数说明:
  • format-string :为格式控制字符串
  • arguments :为参数列表
#!/bin/bash
 
printf "%-10s %-8s %-4s\n" 姓名 性别 体重kg  
printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234 
printf "%-10s %-8s %-4.2f\n" 杨过 男 48.6543 
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指保留2位小数。

 

#!/bin/bash

# format-string为双引号
printf "%d %s\n" 1 "abc"

# 单引号与双引号效果一样 
printf '%d %s\n' 1 "abc" 

# 没有引号也可以输出
printf %s abcdef

# 格式只指定了一个参数,但多出的参数仍然会按照该格式输出,format-string 被重用
printf %s abc def

printf "%s\n" abc def

printf "%s %s %s\n" a b c d e f g h i j

# 如果没有 arguments,那么 %s 用NULL代替,%d 用 0 代替
printf "%s and %d \n" 


执行脚本,输出结果如下所示:

1 abc
1 abc
abcdefabcdefabc
def
a b c
d e f
g h i
j  
 and 0

1.printf的转义序列

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

 

Shell中 test 命令:

 shell中test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。

1.数值测试:

参数说明
-eq 等于则为真
-ne 不等于则为真
-gt 大于则为真
-ge 大于等于则为真
-lt 小于则为真
-le 小于等于则为真

 

 

 

 

 

 

 

 

 

num1=100
num2=100
if test $[num1] -eq $[num2]
then
    echo '两个数相等!'
else
    echo '两个数不相等!'
fi


输出结果:
两个数相等!

代码中的 [] 执行基本的算数运算,如:
#!/bin/bash
a=5
b=6

result=$[a+b] # 注意等号两边不能有空格
echo "result 为: $result"
输出结果为:
result 为: 11

2.字符串测试

参数说明
= 等于则为真
!= 不相等则为真
-z 字符串 字符串的长度为零则为真
-n 字符串 字符串的长度不为零则为真

 

 

 

 

 

 

 

 3.文件测试

参数 

说明
-e 文件名 如果文件存在则为真
-r 文件名 如果文件存在且可读则为真
-w 文件名 如果文件存在且可写则为真
-x 文件名 如果文件存在且可执行则为真
-s 文件名 如果文件存在且至少有一个字符则为真
-d 文件名 如果文件存在且为目录则为真
-f 文件名 如果文件存在且为普通文件则为真
-c 文件名 如果文件存在且为字符型特殊文件则为真
-b 文件名

如果文件存在且为块特殊文件则为真

 

 

 

 

 

 

 

 

 

 

 

 

 

 

cd /bin
if test -e ./bash
then
    echo '文件已存在!'
else
    echo '文件不存在!'
fi

输出结果:
    文件已存在!

 

posted @ 2020-08-12 16:12  wltwxlbgplgd  阅读(109)  评论(0)    收藏  举报