ターミナルで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
.java
ファイルから出力
$ less barkingDog.java
public class {
\tpublic static void main(String[] args) {
dogBark()
}
public static void dogBark() {
System.out.println(Woof)
}
}
ベストアンサー1
ここでは、ドキュメントを使用する方が.bashprintf
シェルの組み込みを使用するよりも優れています。help printf
%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!")
}
}
バラより大きな音を出す方法!