Estou escrevendo um script de shell que lê um arquivo de propriedades e executa alguma operação.
Isto é, ele lê a primeira linha do arquivo prop.
Agora, neste script, quero adicionar uma opção que, se ENABLED, executará o script e executará a operação normal.
Se DESATIVADO sairá do programa normalmente. Eu quero colocar este swich no mesmo arquivo prop. (ou seja, agora a primeira linha do arquivo prop estará ATIVADA ou DESATIVADA)
Atualmente estou usando:
cat init_token.properties | while read line
Agora, antes disso, eu quero ler separadamente o valor do switch e, se HABILITADO, a linha de leitura while deve começar a formar o segunda linha do arquivo de propriedades. Em resumo, quero segregar a leitura da primeira linha e depois o resto.
Formato de init_token.properties:
ENABLED
abc.dat IP 120.210.60.1
xyz.dat PORT 8200
pqr.dat IP 420.24012.4
Roteiro:
#!/bin/ksh
dos2unix init_token.properties &
# PATH for DAT files
DAT_FILE_PATH="."
cat init_token.properties | while read line
do
# PARAMETER EXAMPLE - <FILENAME> <ATTRIBUTE> <VALUE>
# read FILENAME
FILENAME=`echo "$line" | awk -F " " "{print $1}"`
# read ATTRIBUTE
ATTRIBUTE=`echo "$line" | awk -F " " "{print $2}"`
# read VALUE
VALUE=`echo "$line" | awk -F " " "{print $3}"`
# setting fully qualified filepath name & temporary file
FULLPATH=$DAT_FILE_PATH"/"$FILENAME
TEMP_FILE=tempfile
old="$("$FILENAME"_"$ATTRIBUTE")"
# replace $(<FILEANME>_<ATTRIBUTE>) with VALUE if file exists
if [ -e $FULLPATH ]
then
sed "s/"$old"/"$VALUE"/g" $FULLPATH > $TEMP_FILE && mv $TEMP_FILE $FULLPATH
else
echo "File "$FULLPATH" does not exists while replacing token "$old
fi
done
exit
Respostas:
2 para resposta № 1algo assim, talvez?
let CNTR=0
cat init_token.properties | while read line
do
let CNTR=CNTR+1
if [ $X == 1 ]; then
//is first line
else
//is not first line
fi
# PARAMETER EXAMPLE - <FILENAME> <ATTRIBUTE> <VALUE>
# read FILENAME
FILENAME=`echo "$line" | awk -F " " "{print $1}"`
2 para resposta № 2
Você pode tentar algo assim no início do seu script:
CHECK=$(head -n 1 prop.file)
if [ "$CHECK" == "DISABLED" ]; then
exit 0
fi
2 para resposta № 3
Primeiro você pode dividir a linha com read
, então você não precisa usar echo | awk
:
cat init_token.properties | while read filename attribute value
do
A seguir estão as verificações para ATIVADO / DESATIVADO / outro:
case "$filename" in
ENABLED) ;;
DISABLED) exit ;;
*)
# It"s another line, do processing
...
;;
esac
done
Outro ponto: não coloque dos2unix ...
no fundo. Ele pode ser executado por mais tempo do que o seu script. Basta ligar sem &
:
dos2unix init_token.properties