【发布时间】:2017-12-15 20:48:08
【问题描述】:
我编写了一个 shell 脚本来复制当前日期的文件并将它们放在目标文件夹中,并使用当前日期名称,目标文件夹路径包含变量。当我手动运行 cd 或 cp 命令时,此路径工作正常,但在 shell 脚本中,通过 cp 复制时,无法识别带有变量的目录。
d=`date +%b' '%d`
td=`date +%d%b%Y`
cd /filenet/shared/logs
mkdir $td
cd $td
mkdir icn02 icn03 GC cpe01 cpe02 cpe03 cpeb01 cpeb02 icn01 css01 css02 http01 http02 http03
ssh hostname <<'ENDSSH'
cd /<some_path>
ls -ltrh | grep "$d" | awk {'print $9'} | xargs cp -t /filenet/shared/logs/"${td}"/GC
ENDSSH
错误
-ksh[2]: td: not found [No such file or directory]
cp: failed to access ‘/filenet/shared/logs//GC’: No such file or directory
【问题讨论】:
-
ksh 不是 bash。
-
我用过#!/bin/ksh echo $0 bash
-
heredoc 中的
$d计算结果为名为d的 remote 变量,而不是该名称的 local 变量。 -
不要将
grep传递给awk。... | grep pattern | awk '{cmd}'与... | awk '/pattern/{cmd}'相同。
标签: linux bash shell unix scripting