Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 将问题源复制到目标单报价单_Shell_Unix - Fatal编程技术网

Shell 将问题源复制到目标单报价单

Shell 将问题源复制到目标单报价单,shell,unix,Shell,Unix,我在一个输入文件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

下面是代码

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'
(单引号)。由于单引号,我无法执行从源到目标的复制。

这是间接引用问题

如前所述,如何构建“动态”变量名并评估其内容。这在查找配置文件时非常有用

#!/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

我做了一个小测试,效果很好。

我的输入文件中有以下内容。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我可以实现在这里工作的副本。在源代码中,我得到的值是BONUS.PS;在目标代码中,我得到的值是'$DIR/BONUS.PSB'(单引号),因为我可以执行从源代码到目标的复制。
newdest=$(eval“echo$destination”)
将解决此问题。看到我的答案了吗