2011-05-11 5 views
4

나는 파일 및 GREP/변수를 awk가 출력 한 후 고양이를 리디렉션 할 수 있습니다,하지만 난 여러 변수에 대해이 파일을 사용하고 싶습니다. 그것이 경우어떻게 bash를 사용하여 파일에 변수를 저장할 수 있습니까?

그래서 하나 개의 변수는 상태가 다음 내가 나오지도 일부 인라인 편집 도움이 될 것 같아요

echo "STATUS $STATUS" >> variable.file 
#later perhaps in a remote shell where varible.file was copied 
NEW_VAR=`cat variable.file | awk print '{$2}'` 

처럼 어떤 일을 할 수 있다고 말한다. 코드가 작을수록 좋습니다. 파일에 변수를 저장

답변

8

declare 내장 여기

for var in STATUS FOO BAR; do 
    declare -p $var | cut -d ' ' -f 3- >> filename 
done 

Brian says로 유용 배시에 자신을 제한 할 경우, 당신은 좀 더 간단 인용 할 $""을 사용할 수 있습니다 당신을 위해 인용 처리하기 때문에 declare은 중대하다 :

$ FOO='"I'"'"'m here," she said.' 
$ declare -p FOO 
declare -- FOO="\"I'm here,\" she said." 
$ declare -p FOO | cut -d " " -f 3- 
FOO="\"I'm here,\" she said." 
+0

아, 멋지다. 나는'declare -p'에 대해 몰랐다. 표준이 아닌 것처럼 보이지만 Bash 및 zsh로 제한하는 경우에는 작동합니다. 배시에게 먹이를 줄 예정이라면'cut'을 사용하여'declare'를 제거 할 필요는 없습니다. 'declare -p'가 출력 한'declare' 문은 변수를 설정해야합니다. –

+0

멋지다.하지만 어떻게하면 파일 내부의 변수를 업데이트하겠습니까 ?? 모든 내용을 다시 읽고 쓴다. : / – Blauhirn

6

한 일반적인 방법은 파일에 NAME=value 라인을 저장하는 것입니다, 그리고 당신이 변수를 픽업 할 쉘에 그 소스. 이 다른 조개에 이식되지 않을 수 있지만

echo 'STATUS="'"$STATUS"'"' >> variable.file 
# later 
. variable.file 

강타, 당신은 또한, 대신 .source 사용할 수 있습니다. 파일에 올바른 큰 따옴표를 인쇄하는 데 필요한 따옴표의 정확한 순서를주의 깊게주의하십시오.

이 파일로 한 번에 여러 변수를 넣어하려는 경우 다음을 수행 할 수있다. 이것이 적절하고 이식 가능한 일을하는 데 사용되는 인용 곡의 사과. 나중에 할 수 있습니다 source filename

,

for var in STATUS FOO BAR 
do 
    echo "$var="'"'"$(eval echo '$'"$var")"'"' 
done >> variable.file 
+0

'VAR = 값 '형식은 이미 다른 조개에 이식 할 수 없습니다. – Amadan

+5

@Amadan POSIX 호환 쉘에 이식 가능합니다. Bash, 대시, ksh, zsh 등 –

+0

실제로. 그러나'csh','tcsh'는 아닙니다. – Amadan

관련 문제