У меня есть две переменные $ а и $ ЬСравнение двух переменных в оболочке
и
$a=Source/dir1/dir11
$b=Destination/dir1/dir11
$ а и $ Ь изменения, но инициалы источника/назначения и/остается тем же.
Я хочу сравнить $ а и $ Ь без источника/назначения и/
, как я должен это делать? После кода я использую
SOURCE_DIR_LIST=`find Source/ -type d`
DEST_DIR_LIST=`find Destination/ -type d`
for dir_s in $SOURCE_DIR_LIST
do
for dir_d in $DEST_DIR_LIST
do
if [ ${dir_s/Source\//''} == ${dir_d/Destination\//''} ]
then
echo " path match = ${dir_s/Source\//''}"
else
echo "path does not match source path = ${dir_s/Source\//''} "
echo " and destination path= ${dir_d/Destination\//''} "
fi
done
done
Но выход приходит вроде как следовать
path match = ''
./compare.sh: line 9: [: ==: unary operator expected
path does not match source path = ''
and destination path= ''dir2
./compare.sh: line 9: [: ==: unary operator expected
more
FYI Вы фактически не назначаете ничего в этом выражении. Потеряйте знаки доллара, чтобы выполнять задания. –
Исправлены ли имена «Источник» и «Целевое назначение», или это пути, удерживаемые в переменных? Это может повлиять на лучший ответ. –
Я хочу компаре, даже если он изменяется, как $ a = Source/dir1/dir11/mydir. Я всегда хочу сравнить без Source/и Destination/ – Vivek