필자는 셸 스크립트의 함수에 파일의 변수 설정을 읽고 쓰려고했습니다. 이 일을하는 더 깨끗한 방법이 있는지 궁금합니다. 나는 특히 기존의 일치하는 부분을 삭제하고 파일의 끝에 다시 쓰는 부분을 좋아하지 않는다. 이 작업을 수행하는 더 좋은 방법이 있습니까? 감사. 당신은 당신이 어쨌든 변수에 설정하는 문자열을 반환 sed를 사용할 수 있기 때문에변수 값을 읽고 파일에 논리를 향상 시키려면 어떻게해야합니까?
fnReadTestSetting()
{
#$1 is the variable to be read from the testsettings.ini file
grep $1 $MAIN_FOLDER/testsettings.ini >$MAIN_FOLDER/temp.ini
if [ $? -eq 0 ]; then
sed -i "s|$1=||" $MAIN_FOLDER/temp.ini
TEST_VALUE=`cat $MAIN_FOLDER/temp.ini`
export $1=$TEST_VALUE
fi
rm $MAIN_FOLDER/temp.ini
return
}
fnWriteTestSetting()
{
#$1 is the variable and value to be written to the testsettings.ini file in the format VARIABLE_NAME=VALUE
if [ ! -e $MAIN_FOLDER/testsettings.ini ]; then
touch $MAIN_FOLDER/testsettings.ini
fi
SETTING_NAME=`echo $1 | awk -F = '{print $1}'`
grep $SETTING_NAME $MAIN_FOLDER/testsettings.ini &>/dev/null
if [ $? -eq 0 ]; then
sed -i "/^$SETTING_NAME/d" $MAIN_FOLDER/testsettings.ini
echo "$1" >> $MAIN_FOLDER/testsettings.ini
else
echo "$1" >> $MAIN_FOLDER/testsettings.ini
fi
return
}
'$ string'의 앞부분에서'$ substring'의 가장 짧은 일치를 제거하기 위해'VARIABLE ='을 없애기 위해'awk'를 생성하는 대신에'$ {string # substring} 비트; 여기에 몇 가지 작은 세부 정보 : http://tldp.org/LDP/abs/html/refcards.html – sarnold
나는 이걸 읽어 보았습니다 : \t LINE ='grep $ 1 testsettings.ini'; \t KEY = $ 1 "="; \t VALUE = $ {LINE # $ KEY}; \t 내보내기 $ 1 = $ VALUE; IP_ADDRESS = 10.0.0.1 값을 가진 함수에 IP를 전달할 때 실패했습니다. – fzkl