Неопределенная переменная

Отсутствует то, что ваша команда компоновщика

gcc -shared -Wl,-soname,libnew.so.1 -o libnew.so.1.0 *.o -L. -lold

не копирует объекты из libold.so , но ссылается на к символам в этом файле, чтобы сообщить динамическому загрузчику, где он может получить эти символы.

Обычно, когда кто-то пытается подавить / скрыть данную библиотеку, они начинают с рекомбинации объектных файлов, которые использовались для создания разделяемой библиотеки. Вы могли сделать это с помощью частичного связывания , но я не вижу решения (поскольку разделяемые библиотеки и разделяемые объекты не взаимозаменяемы).

Дополнительная литература:

2
25.11.2018, 02:50
2 ответа

Помимо всех причин, по которым сценарии не должны быть написаны на csh, вы смешиваете синтаксис bash и синтаксис csh в своем скрипте.

Вы начинаете свой цикл с csh foreach и пытаетесь закончить их с помощью bash done. Выходом из цикла для csh foreach является end, а не done. Кроме того, у вас есть переменная VISIT, которую вы вызываете $VIS в операторе grep.

Таким образом, сценарий будет синтаксически корректен в csh с:

#!/bin/csh
foreach SUB (1 2 3 4 5 6 7 8 9 10 11 12 13 14)
    echo $SUB
    foreach VISIT (1 2 3 4 5 6 7 8)
        echo $VISIT
        grep 'StudyDate' -f  /home/colourlab/Desktop/DrummingDTI/D${SUB}/D${SUB}V${VISIT}/scout/001/infodump.dat
    end
end

или в bash:

#!/bin/bash
for SUB in 1 2 3 4 5 6 7 8 9 10 11 12 13 14; do
    echo $SUB
    for VISIT in 1 2 3 4 5 6 7 8; do
        echo $VISIT
        grep 'StudyDate' -f  /home/colourlab/Desktop/DrummingDTI/D${SUB}/D${SUB}V${VISIT}/scout/001/infodump.dat
    done
done

EDIT 2017/04/03

Вот версия скрипта bash, которая добавляет тест для файла:

#!/bin/bash

idf_pfx="/home/colourlab/Desktop/DrummingDTI"
idf_sfx="scout/001/infodump.dat"

for SUB in 1 2 3 4 5 6 7 8 9 10 11 12 13 14; do
    echo $SUB
    for VISIT in 1 2 3 4 5 6 7 8; do
        echo $VISIT
        idfile="${idf_pfx}/D${SUB}/D${SUB}V${VISIT}/${idf_sfx}"
        if [ -f "${idfile}" ]; then
            grep 'StudyDate' $idfile
        else
            echo "No studydate file: $idfile"
        fi
    done
done
5
27.01.2020, 21:56

Ваше сообщение об ошибке не соответствует отображаемому коду. $ SUB - это хорошо определенная переменная, и csh не будет скучать по ней. Скорее csh выдаст ошибку «done: команда не найдена», которую вы должны были получить. Вы уверены, что скопировали правильное сообщение?

0
27.01.2020, 21:56

Теги

Похожие вопросы