영구 변수 값을 사용하여 Bash 스크립트를 만들 수 있습니까?마지막 실행 시간에서 값을 유지하는 Bash 스크립트의 변수
예를 들어, 스크립트가 처음으로 (특정 제한 시간 동안) 실행될 때 0으로 변수를 초기화하고 스크립트가 실행될 때마다 변수가 자동으로 증가합니다.
영구 변수 값을 사용하여 Bash 스크립트를 만들 수 있습니까?마지막 실행 시간에서 값을 유지하는 Bash 스크립트의 변수
예를 들어, 스크립트가 처음으로 (특정 제한 시간 동안) 실행될 때 0으로 변수를 초기화하고 스크립트가 실행될 때마다 변수가 자동으로 증가합니다.
당신은 할 수 없습니다,하지만 당신은 그것을
#!/bin/sh
# if we don't have a file, start at zero
if [ ! -f "/tmp/value.dat" ] ; then
value=0
# otherwise read the value from the file
else
value=`cat /tmp/value.dat`
fi
# increment the value
value=`expr ${value} + 1`
# show it to the user
echo "value: ${value}"
# and save it for next time
echo "${value}" > /tmp/value.dat
어딘가에 파일을 저장해야 할까봐 걱정됩니다. 트릭은 사용자가 쓸 수있는 어딘가에 넣는 것입니다.
yourscriptvar=0
if [ -e "$HOME/.yourscriptvar" ] ; then
yourscriptvar=$(cat "$HOME/.yourscriptvar")
fi
# do something in your script
#save it output the file
echo $yourscriptvar > "$HOME/.yourscriptvar"
여기 bash-ism :'yourscriptvar = $ (< "$ HOME/.yourscriptvar")'가 있습니다. 문서 [여기] (http://www.gnu.org/software/bash/manual/bashref.html#Command-Substitution) –
나는 그것을 좋아한다 ... 나는 bash hackery의 나의 가방에 넣을 것이다. 감사합니다 –
내가 몇 일 전에 같은 문제를 가지고 할 수있는 파일을 사용할 수 있습니다 내가 일 때문에 할 내 자신의 도구를 작성했습니다 비슷한 일을하는 다른 방법이 없습니다.
gvar은 각 사용자가 다른 데이터 수집을 갖는 순수한 배쉬 키 - 값 저장소입니다. 레코드는 사용자의 홈 디렉토리에 저장됩니다. 여기
그것입니다 소스 코드에서 가장 흥미로운 기능 : bash는 스크립트
get_variable() {
cat $FILE | grep -w $1 | cut -d'=' -f2
}
set_variable() {
echo $1=$2 >> $FILE
}
remove_variable() {
sed -i.bak "/^$1=/d" $FILE
}
허. 그러한 '도서관'의 경우 속도에 맞게 최적화 될 것이라고 생각할 것입니다. 예를 들어'grep'이 이미 파일을 인수로 취할 수 있기 때문에'grep'을 사용하면'cat'은 불필요합니다. 게다가, 만약'flock'이나 무언가를 사용하지 않으면 이것이 병렬 실행에서 어떻게 잘 작동하는지 궁금합니다. – Yeti
@ 예티 당신은 완전히 옳습니다, gvar는 내 문제를 해결 한 장난감이지만 앞으로 나아 가지 않았습니다. 나는 당신이 지적한 유사한 것들을 생각했다. 감사. –
키/값 데이터베이스 쓰기; https://github.com/damphat/kv-bash :) – damphat