「bash printf escaped」をグーグルで検索した後、最初の検索結果をクリックしてここにたどり着いた人々のために、printf を使用して bash エスケープされたテキストを生成する正しい方法は次のとおりです。
printf " %q" "here is" "a few\n" "tests"
どの出力 (末尾の改行なし):
here\ is a\ few\\n tests
試す
printf "%s\n" "$string"
printf(1) を参照
$' '
を使用できます 改行とタブ文字を囲むには、プレーンな echo
で十分です:
#!/bin/bash
get_lines() {
local string
string+='The path to K:\Users\ca, this is good'
string+=$'\n'
string+='The second line'
string+=$'\t'
string+='123'
string+=$'\n'
string+='It also has to be 100% nice than %99'
echo "$string"
}
get_lines
また、スクリプトにいくつかの小さな変更を加えました。 FUNCTION_NAME を小文字にするだけでなく、より広く互換性のある関数構文も使用しました。この場合、大きな利点はありません ($' '
のように) とにかく、文字列は bash 拡張機能です) が、function func()
を使用する理由はありません 私が知る限り、構文。また、string
のスコープ それが使用されている関数に対してローカルである可能性もあるので、それも変更しました.
出力:
The path to K:\Users\ca, this is good
The second line 123
It also has to be 100% nice than %99
「man printf」は、「%」文字が別の「%」を使用してエスケープする必要があることを明確に示しているため、printf「%%」は単一の「%」になります