2016-11-10 1 views
0

printf 내에서 변수를 반향하려고합니다.printf 내에서 변수를 전달하는 방법

printf 'Are you sure you want $lrus lrus:  ' ;read -r ans 

예를 들어 출력이 보일 것 : 내가 먼저

printf 'Specify lrus [default 128]:   ' ;read -r lrus 

는 다음 그가 이전 질문에서 사용되는 입력을 원하는 있는지 확인하기 위해 다시하라는 메시지를 표시 아래의 명령을 사용하여 사용자에게 입력하라는 메시지를 표시 아래처럼 :

Specify lrus [default 128]:  60 
Are you sure you want 60 lrus: yes 

위 출력은 이전 입력 변수를 printf를 사용하여 다음 질문에 전달할 수 있도록하려는 것입니다.

+1

큰 따옴표 'printf "..." " – sat

+0

작동. 고맙습니다 –

답변

3

귀하의 문제는 작은 따옴표를 사용하고 있다는 점이다. 매개 변수는 작은 따옴표 안에 확장되지 않습니다.

매개 변수는하지만, 큰 따옴표로 확장됩니다 : 별도의 인쇄 필요가 없다는 것을

printf "Are you sure you want $lrus lrus: " 

참고; 그것은 (즉, 한 가지, 터미널 폭을 이해) read-p 인수를 사용하는 것이 좋습니다 :

read -p "Specify lrus [default 128]: " -r lrus 
read -p "Are you sure you want $lrus lrus? " -r ans 
0

시도해 볼 수 있습니다.

printf 'Are you sure you want '${lrus}' lrus:  ' ;read -r ans 

또는

printf "Are you sure you want ${lrus} lrus:  " ;read -r ans 
2

printf 사용 형식 지정자를 사용하여. 당신이 당신의 값이 이동하고 다음 매개 변수의 값을 넣어하려는 %s을 넣어 :

printf 'Are you sure you want %s lrus:  ' "$lrus" 
read -r ans 

이 안전하고 printf 형식 문자열에 변수를 삽입하는 큰 따옴표를 사용하는 것보다 더 강력하다. 큰 따옴표를 사용하면 예를 들어 다음을 포함하는 변수를 쓸 수 없습니다. 100% :

$ var='100%'; printf "Value is $var" 
bash: printf: `%': missing format character 

$ var='100%'; printf "Value is %s" "$var" 
Value is 100% 
관련 문제