
設定の変数printf
と変数の両方を試していますが、試したことはすべてエラーを返すか、プロンプトにテキストを入力します。export
PS1
printf
\u
v='\u\$'; printf "$v"; export PS1="$v"
-bash: printf: missing unicode digit for \u
v='\\u\$'; printf "$v"; export PS1="$v"
\u$
v=$'\u'; v+='\$'; printf "${v}"; export PS1="${v}"
-bash: printf: missing unicode digit for \u
両方の操作を$v
実行できる書式設定方法はありますか?printf
export
答え1
printf
最初の引数の一部のバックスラッシュ文字は特殊文字として解釈されるため失敗します。
printf
一般的に言えば、力を使うとき
- 他のパラメータから取得する必要があるデータのプレースホルダを含むことができる静的型文字列
- 静的書式文字列のプレースホルダに使用される追加の変数データ。
これは最初のパラメータprintf
ですいつも一重引用符で囲まれた文字列。
%s
シェルでは、左/右のパディングなどが必要ない場合(たとえば、%20s
右揃え文字列または左揃え文字列文字に%-20s
20を使用)など、書式設定された文字列のほとんどすべての項目のプレースホルダとして使用できます。浮動小数点数の小数桁(%.3f
小数点3桁)または整数のゼロパディング(%08d
小数点8桁)など
たとえば、文字列を印刷するには、%s
書式文字列内で次を使用します。
v='\u\$'
printf 'PS1 will be set to "%s"\n' "$v" # or just: printf '%s\n' "$v"
PS1="$v"
または
PS1='\u\$'
printf 'PS1 was set to "%s"\n' "$PS1" # or just: printf '%s\n' "$PS1"
これは出力されます
PS1 will be set to "\u\$"
そして
PS1 was set to "\u\$"
システムのprintf(1)
および/または(および)を参照してください。printf(3)
man 1 printf
man 3 printf
また、PS1
エクスポートは必要ありません。