【发布时间】:2020-01-02 01:15:27
【问题描述】:
我很好奇我能不能把我的蛋糕也吃掉。我正在编写一个脚本,需要在远程服务器上找到最新日期的目录。然后我需要构建该路径,以便可以在服务器上找到特定的 .csv 文件。
脚本接受一个名为folder 的输入,它需要附加到路径的末尾。我注意到我可以将文件夹传递到 heredoc 并对其进行扩展,但随后我失去了我需要做的 awk 扩展。这是一个例子:
folder='HBEP'
ssh $server /bin/bash << EOF
ls -t /projects/bison/git |
head -1 |
awk -v folder=$folder '{print "projects/bison/git/"$1"/assessment/LWR/validation/"folder}'
EOF
这会产生一个接近但错误的输出:
# output:
/projects/bison/git//assessment/LWR/validation/HBEB
# should be:
/projects/bison/git/bison_20190827/LWR/validation/HBEP
现在,当我引用 EOF 时,我可以访问管道输入变量,但不能访问文件夹变量:
folder='
ssh $server /bin/bash << 'EOF'
ls -t /projects/bison/git |
head -1 |
awk -v folder="$folder" '{print "projects/bison/git/"$1"/assessment/LWR/validation/"folder}'
EOF
# output:
projects/bison/git/bison_20190826/assessment/LWR/validation/
# should be:
projects/bison/git/bison_20190826/assessment/LWR/validation/HBEP
有没有一种方法可以利用 heredoc 和外壳中的扩展?
【问题讨论】:
-
您为什么不使用
git本身来跟踪您正在跟踪的内容的最新版本? -
即使你不使用
git,无论创建一个新的bison_YYYYMMDD目录都应该只维护一个指向最新目录的bison_current符号链接。 -
我们可以,但是我们的夜间测试需要很长时间,所以我们每天都会将主分支推送到我们的集群。这些测试输出我需要做一些分析的数据文件。我们不保留数据文件的版本,因为它们很大。
-
@chepner 好主意,我会和负责夜间测试的人谈谈。 (编辑:实际上我认为他们想要一个地方来保存所有夜间运行的历史,我个人认为除了对主版本进行版本控制之外没有太大区别)