首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

Bash字符串处置(与Java对照) - 4.字符串输出

2012-06-28 
Bash字符串处理(与Java对照) - 4.字符串输出Bash字符串处理(与Java对照) - 4.字符串输出In Java输出到标准

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


10
[root@jfht tmp]# wc -c <<<"$S"
10
[root@jfht tmp]# wc -c <<EOF
> $S
> EOF
10
[root@jfht tmp]#

?

格式化输出(printf)

printf "%8s" "$S"

类似C语言的格式化输出,此处不深入探讨。将在本系列的第18节详述。

?

?

本文链接:http://codingstandards.iteye.com/blog/1168164? (转载请注明出处)

返回目录:Java程序员的Bash实用指南系列之字符串处理(目录)?

上节内容:Bash字符串处理(与Java对照) - 3.给(字符串)变量赋值

下节内容:Bash字符串处理(与Java对照) - 5.字符串输入(读取字符串)

?

热点排行