bit*_*bit 2 command-line bash quoting printf
我正在使用终端编写 Java 程序printf
并将其输出重定向到.java
文件,但printf
无法解释水平反斜杠选项卡 ( \t
),并且当我在字符串中有感叹号 (!) 时,它甚至不打印并失败这个错误:
bash: !": event not found
如何强制 printf 包含水平制表符?
以及如何在不出现上述错误的情况下包含感叹号?
$ printf "%s\n" "public class {" "\tpublic static void main(String[] args) {" "dogBark()" "}" "public static void dogBark() {" "System.out.println("Woof")" "}" "}" > barkingDog.java
Run Code Online (Sandbox Code Playgroud)
.java
文件输出$ less barkingDog.java
public class {
\tpublic static void main(String[] args) {
dogBark()
}
public static void dogBark() {
System.out.println(Woof)
}
}
Run Code Online (Sandbox Code Playgroud)
使用 here-document 可能比使用printf
. 但是,从 bash shell 的内置help printf
Run Code Online (Sandbox Code Playgroud)%b expand backslash escape sequences in the corresponding argument
并防止bash
将其!
视为历史扩展,请单引号您的字符串:
$ printf '%b\n' 'public class {' '\tpublic static void main(String[] args) {' 'dogBark()' '}' 'public static void dogBark() {' 'System.out.println("Woof!")' '}' '}'
public class {
public static void main(String[] args) {
dogBark()
}
public static void dogBark() {
System.out.println("Woof!")
}
}
Run Code Online (Sandbox Code Playgroud)
请参阅如何回声!
归档时间: |
|
查看次数: |
1083 次 |
最近记录: |