설정에 대한 변수 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
소수점 세 자리) 또는 정수의 제로 패딩( %08d
소수점 여덟 자리) 등
예를 들어, 문자열을 인쇄하려면 %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
내보내기가 필요하지 않습니다.