Если условие вопроса | AIX - bash | сравнение значения из файла с жестко закодированным значением - PullRequest
0 голосов
/ 21 июня 2019

if [ $data == $dis ] эта строка не дает ожидаемых результатов в скрипте

Пробовал на терминале, работает нормально.В сценарии ожидается «true», а затем вы хотите удалить эту строку из файла

root@M5-L-G01FQY9:/mnt/c/Users/Vinita.a.wadhwani/Downloads/Rough# d="<disabled></disabled>"
root@M5-L-G01FQY9:/mnt/c/Users/Vinita.a.wadhwani/Downloads/Rough# c="<disabled></disabled>"
root@M5-L-G01FQY9:/mnt/c/Users/Vinita.a.wadhwani/Downloads/Rough# if [ $d == $c ]
> then
> echo "true"
> fi
true

Код выглядит следующим образом:

dirmon=$1
action=$2
node=$(grep -l $dirmon *)
line=$(grep -n -m 1 $dirmon $node | sed  's/\([0-9]*\).*/\1/')
echo 'Performing' $action 'action on dirmon-'$dirmon 'which is present in node-'$node
no=$(($line+20))
data=$(sed -n "${no}p" $node) #gives results as <disabled></disabled>
echo $data
dis="<disabled></disabled>"
echo $dis
if [ $data == $dis ]
then
echo 'true'
fi
#echo 'false'

Ожидаемые результаты:

root@M5-L-G01FQY9:/mnt/c/Users/Vinita/Downloads/Rough# ./On* YELLOW start
Performing start action on dirmon-YELLOW which is present in node-NODE.txt
<disabled></disabled>
<disabled></disabled>
true

Фактические результаты

root@M5-L-G01FQY9:/mnt/c/Users/Vinita/Downloads/Rough# ./On* YELLOW start
Performing start action on dirmon-YELLOW which is present in node-NODE.txt
<disabled></disabled>
<disabled></disabled>

1 Ответ

0 голосов
/ 21 июня 2019

Причиной был пробел, из-за которого сравнение не удавалось.

Для отладки используется огромная команда, которая помогла выявить проблему set -x.

Модифицированный код:

#!/bin/bash
set -x
dirmon=$1
action=$2
node=$(grep -l $dirmon *)
line=$(grep -n -m 1 $dirmon $node | sed  's/\([0-9]*\).*/\1/')
echo 'Performing' $action 'action on dirmon-'$dirmon 'which is present in node-'$node
no=$(($line+20))
data=$(sed -n "${no}p" $node| sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' )
echo $data
dis="<disabled></disabled>"
echo $dis
if [ "$data" = "$dis" ]
then
echo 'true'
fi
#echo 'false'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...