Дано:
eval "whole_phrase=$x" # store the whole phrase to another variable
Лучше:
whole_phrase="$x"
И дано:
eval "first_element=echo $x | cut -d';' -f1" # extract the first element after splitting
Есть много способов извлечь первый элемент.
Поскольку вашим разделителем является символ точки или .
, передайте его в awk
и попросите напечатать только первое поле:
first_element="$(awk -F. '{print $1}' <<< "$x")"
Или, поскольку в этом особом случае вам нужен только первый элемент, легко указать sed
удалить первый .
символ и все после него:
first_element="$(sed -e 's/\..*//' <<< "$x")"
Наконец, учтите, что пока вы не изменяете переменную x
, которую вы читаете из своего файла, у вас уже есть там значение whole_phrase
. Действительно, вы могли бы использовать это имя переменной в своем цикле while
:
while read whole_phrase
do
first_element="$(awk -F. '{print $1}' <<< "$whole_phrase")"
myprogram -i "../$first_element" -o "../$whole_phrase"
done < ListOfDotSeparatedPhrases.txt
Это не ошибка, но вы не делаете ничего неправильного . libmagickwand-dev
помечен как переходный пакет, втягивающий libmagickwand-6.q16-dev
. Он находится в секции oldlibs
, поэтому deborphan
считает его, и, поскольку это листовой пакет, он оказывается потерянным.
Во избежание этого можно установить libmagickwand-6.q16-dev
напрямую.