2019年2月18日 / 294次阅读
Linux命令
Linux Shell的echo命令很常用,不过有些细节还是要注意理解,本文通过代码实例来说明。
[xinlin@ifos ~]$ echo Iamme
Iamme
[xinlin@ifos ~]$ echo i am me
i am me
[xinlin@ifos ~]$ echo i am me
i am me
echo可以接一个没有空格的字符串;
echo命令也可以接有多个参数,显示出来后,每个参数之间有一个空格;
命令参数之间的空格可以是多个。
命令参数之间多个空格,是Bash接收命令的一个共性,多个空格都当成一个空格来处理,如cat命令:
[xinlin@ifos ~]$ ll
total 12
-rw-rw-r--. 1 xinlin xinlin 13 Feb 17 20:05 t2.sh
-rw-rw-r--. 1 xinlin xinlin 22 Feb 17 20:05 t.sh
-rw-rw-r--. 1 xinlin xinlin 43 Feb 17 19:18 t.txt
[xinlin@ifos ~]$ cat t.sh t2.sh
ftest(){
return 123
}
ktest(){
:
}
再来一个示例:
[xinlin@ifos ~]$ str='i am a wide string'
[xinlin@ifos ~]$ echo $str
i am a wide string
[xinlin@ifos ~]$ echo "$str"
i am a wide string
str变量的内容是不包含前后的引号的,不管是单引号还是双引号,引号不是变量的内容。
因此,echo $str,就是直接将str的内容替换,然后echo,效果就成了每个单词之间只有一个空格的显示。
而,echo "$str",将str内容替换后,再包上双引号(这里不能是单引号哦...),双引号和之间的内容就成了一个整体,所以里面的空格就全部显示出来了。
Bash接收的是命令,命令与参数之间用空格分开,多个空格当成一个空格。关于空格,说一下read命令;
read命令会set一个变量,会把输入时前后的空格全部自动去掉,但是中间的空格会保留,就像上面的示例:
[xinlin@ifos ~]$ echo -n 'input:';read jkk
input:a b c
[xinlin@ifos ~]$ echo ${jkk}
a b c
[xinlin@ifos ~]$ echo "${jkk}"
a b c
参数 -n ,在echo命令使用的频率很高,它表示不要换行。
如何使用echo命令进行多行的输入?
使用引号,单引号双引号都可以,只是单引号不展开变量。
[xinlin@promote ~]$ echo 'abcde
> 12345
> abcde'
abcde
12345
abcde
如何将echo命令的多行输入,直接写入文件?
老办法呀,重定向符号,> or >>
[xinlin@promote ~]$ a=1988
[xinlin@promote ~]$ echo "i am born
> at ${a}" > birth.txt
[xinlin@promote ~]$ cat birth.txt
i am born
at 1988
还可以使用 -e 参数,将字符串中的backslash进行解码:
xinlin@ubuntu:~/test$ echo -e '12345\nabcde' > echotest.txt
xinlin@ubuntu:~/test$ cat echotest.txt
12345
abcde
关于echo命令,get到了吧。
本文链接:https://www.maixj.net/ict/echo-20208
《echo命令》有2条留言
©Copyright 麦新杰 Since 2014 云上小悟独立博客版权所有 备案号:苏ICP备14045477号-1。云上小悟网站部分内容来源于网络,转载目的是为了整合信息,收藏学习,服务大家,有些转载内容也难以判断是否有侵权问题,如果侵犯了您的权益,请及时联系站长,我会立即删除。
echo的输出,常常被用来当做其它程序的输入! [ ]
简单的文本输出用echo,复杂格式的输出用printf。 [ ]