2017-12-08 23 views
1

MAC OS X 터미널의 printf 기능에 문제가 있습니다. 이미 변수를 선언했으며 호출하면 작동합니다. 문제는 다음과 같습니다.MAC OS X 터미널이 일부 변수를 무시하도록 인쇄합니다.

텍스트에서 "$"로 시작하지만 다른 시스템에 속한 변수가 있습니다. 난 단지 파일을 인쇄하고 싶다. 나는이 방법을 (foo) 정확하게 만들지 만 bash는 그것들을 자신의 변수로 읽지 않는다. 결과는 빈 문자열입니다.

내가 (더미 코드) 다음 코드가 :

echo "Type the wished folder name followed by [ENTER]:" 

read baseName 

echo '' > ext_emconf.php 

printf " $VARIABLE[$ANOTHERVARIABLE] = [ 
'title' => '%s - Templates' 
]; 
" $basename> ext_emconf.php 

내가 예를 들어 사용자가 "아마존"준이 이후 얻을 결과 :

[] = [ 
    'title' => 'Amazon - Templates' 
]; 

내가 기대했지만 :

미리 감사드립니다.

+0

다른 파일로 덮어 쓰기 전에 파일에 줄 바꿈을 쓸 필요가 없습니다. – tripleee

답변

3

bash을 큰 따옴표로 묶어 변수로 확장하려고 시도하지만 정의가 없습니다. 작은 따옴표를 사용하거나 문자열을 사용하여 멋진 여러 줄 형식의 문자열을 더 잘 인쇄하십시오. 다음은 몇 가지 변수로 수행 할 수있는 샘플 방법입니다.

foo=bar 
bar=foo 
basename=foobar 

tee ext_emconf.php <<EOF 
$foo[$bar] = [ 
'title' => '$basename- Templates' 
]; 
EOF 

위의 예와 표준 출력 한 파일을 모두 쓰고 tee을 이용한다. 또한 콘솔에서 콘솔을 볼 수 없도록하려면 stdout을 /dev/null으로 리디렉션 할 수도 있습니다.

tee ext_emconf.php <<EOF > /dev/null 
$foo[$bar] = [ 
'title' => '$basename- Templates' 
]; 
EOF 
+0

일부 수정으로 효과가있었습니다. 하지만 bash가 자신의 변수로 읽으 려하지 않고 작성해야하는 100 개의 변수가 있다면 어떻게됩니까? 100 개의 변수를 선언해야합니까? 수정 사항은 변수 선언에 있습니다. $로 인쇄하려면이 방법으로 선언해야합니다. foo = '$ bar' –

+0

@AristeidisKaravas : 아직 문제가 있습니까? 내 대답이 도움이 되었습니까? – Inian