2015-10-12 4 views
0

У меня есть ниже содержание в InputFile BONUS.PS,$DIR/BONUS.PSBкопия назначения одинарные кавычки

Ниже приведен код.

DIR=/home/sample 
for i in `cat inputfile` 
do 
source=`echo $line|awk -F, '{print $1}'|tr -d "'"` 
destination=`echo $line|awk -F, '{print $2}'|tr -d "'"` 
echo $source $destination 
cp -v $source $destination 
done 

Я не мог получить копию для работы здесь. В источнике я получаю значение как BONUS.PS, в пункте назначения я получаю значение как '$DIR/BONUS.PSB' (одинарная кавычка). Из-за одной кавычки я не мог выполнить копию из источника в пункт назначения.

+0

У меня есть содержимое ниже в файле ввода. BONUS.PS, $ DIR/BONUS.PSB Ниже приведен код. DIR =/home/sample для i в cat inputfile do source = echo $ line | awk -F, '{print $ 1}' | tr -d "'" destination = echo $ line | awk -F,' {print $ 2} '| tr -d "'" echo $ source $ destination cp -v $ source $ destination done Я мог бы получить копию для работы здесь. В источнике я получаю значение как BONUS.PS. В пункте назначения я получаю значение как «$ DIR/BONUS.PSB» (одинарная кавычка). Из-за одиночной кавычки я мог выполнить копию из источника в пункт назначения. – Vignesh

+0

'newdest = $ (eval" echo $ destination ")' исправит проблему. См. Мой ответ – SriniV

ответ

0

Это косвенная проблема ссылок.

Как указано here, как построить «динамические» имена переменных и оценить их содержимое. Это может быть полезно при поиске файлов конфигурации.

#!/bin/bash 
# This could be "sourced" from a separate file. 

isdnMyProviderRemoteNet=172.16.0.100 
isdnYourProviderRemoteNet=10.0.0.10 
isdnOnlineService="MyProvider" 

remoteNet=$(eval "echo \$$(echo isdn${isdnOnlineService}RemoteNet)") 
remoteNet=$(eval "echo \$$(echo isdnMyProviderRemoteNet)") 
remoteNet=$(eval "echo \$isdnMyProviderRemoteNet") 
remoteNet=$(eval "echo $isdnMyProviderRemoteNet") 

echo "$remoteNet" # 172.16.0.100 

Чтобы адресовать вашу заботу,

Вы, возможно, потребуется изменить скрипт ниже.

Я изменил использование line и ссылаюсь как i, удалена кавычка, удален tr

DIR=/home/sample 
for i in $(cat inputfile) 
do 
source=$(echo $i|awk -F, '{print $1}') 
destination=$(echo $i|awk -F, '{print $2}') 

newdest=$(eval "echo $destination") 
echo "$source" 
echo "$newdest" 

cp -v $source $newdest 
done 

я сделал небольшой тест и он работал отлично.

Смежные вопросы