Bash字符串处理(与Java对照) - 4.字符串输出
Bash字符串处理(与Java对照) - 4.字符串输出In Java输出到标准输出设备(控制台、屏幕)
System.out.println(s);
?
输出到标准错误设备(控制台、屏幕)System.err.println(s);
?
输出到文件PrintWriter outputStream = new PrintWriter(new FileWriter("output_file.txt"));
try {
??? outputStream.println(s);
} finally {? // 别忘记将输出流关闭,否则会造成资源泄漏
??? outputStream.close();
}
?
Line-Oriented I/O (来自 http://download.oracle.com/javase/tutorial/essential/io/charstreams.html)
import java.io.FileReader;import java.io.FileWriter;import java.io.BufferedReader;import java.io.PrintWriter;import java.io.IOException;public class CopyLines { public static void main(String[] args) throws IOException { BufferedReader inputStream = null; PrintWriter outputStream = null; try { inputStream = new BufferedReader(new FileReader("xanadu.txt")); outputStream = new PrintWriter(new FileWriter("characteroutput.txt")); String l; while ((l = inputStream.readLine()) != null) { outputStream.println(l); } } finally { if (inputStream != null) { inputStream.close(); } if (outputStream != null) { outputStream.close(); } } }}?In Bashecho
关于echo命令,也可以参考“我使用过的Linux命令之echo - 显示文本、打印信息”。
?
输出字符串常量
示例:echo Hello
示例:echo "Hello"
?
[root@jfht tmp]# echo Hello
Hello
[root@jfht tmp]# echo "Hello"
Hello
[root@jfht tmp]# echo Hello?? World
Hello World
[root@jfht tmp]# echo "Hello?? World"
Hello?? World
[root@jfht tmp]#
?
?
输出变量
格式1:echo $VAR
格式2:echo ${VAR}
上面的格式,如果变量VAR保存的字符串中包含空格、换行,那么这些空格、跳格、换行将会被压缩掉。
格式3:echo "$VAR"
格式4:echo "${VAR}"
注意,不能用单引号来引用。
?
[root@jfht tmp]# VAR=" Hello??? World?? "
[root@jfht tmp]# echo $VAR
Hello World
[root@jfht tmp]# echo ${VAR}
Hello World
[root@jfht tmp]# echo "$VAR"
?Hello??? World??
[root@jfht tmp]# echo "${VAR}"
?Hello??? World??
[root@jfht tmp]# echo '$VAR'
$VAR
[root@jfht tmp]# echo $'$VAR'
$VAR
[root@jfht tmp]#
?
?
注意:echo在输出信息的时候会自动加上换行,
如果不需要换行,加上 -n参数即可
如果标准输出是终端,那么是显示为多列形式的;否则就是一行一列。而对于$(ls)和`ls`,实际上标准输出已经不是终端了。
?
追加到文件
格式:echo "$S" >>output.txt
?
[root@jfht tmp]# S=123456789
[root@jfht tmp]# echo "$S" >output.txt?
[root@jfht tmp]# cat output.txt
123456789
[root@jfht tmp]# echo "$S" >output.txt
[root@jfht tmp]# cat output.txt??????
123456789
[root@jfht tmp]# echo "$S" >>output.txt
[root@jfht tmp]# cat output.txt???????
123456789
123456789
[root@jfht tmp]#
?
输出到标准错误设备比如用来打印程序的出错信息
echo "$S" >&2
>&2表示把标准输出重定向到文件描述符2,而这正是标准错误输出的文件描述符。
?
[root@jfht tmp]# if ! ls "*"; then echo "error ls" >&2; fi
ls: *: 没有那个文件或目录
error ls
[root@jfht tmp]#
上面命令行的意思是说列出文件名为*的文件,如果出错,就打印错误信息。
?
输出到别的进程管道线(|)
示例:echo "$S" | wc -c
?
格式化输出(printf)printf "%8s" "$S"
类似C语言的格式化输出,此处不深入探讨。将在本系列的第18节详述。
?
?
本文链接:http://codingstandards.iteye.com/blog/1168164? (转载请注明出处)
返回目录:Java程序员的Bash实用指南系列之字符串处理(目录)?
上节内容:Bash字符串处理(与Java对照) - 3.给(字符串)变量赋值
下节内容:Bash字符串处理(与Java对照) - 5.字符串输入(读取字符串)
?