如何解决从外部驱动器复制到 Box 文件夹的 Bash 脚本
尝试编写一个 bash 脚本,根据主题 ID 将大量文件从外部驱动器复制到单独的目录中。
我已经包含了我在下面编写的脚本。
我收到以下错误:
cat: /Volumes/Seagate: No such file or directory
cat: Backup: No such file or directory
cat: Plus: No such file or directory
cat: Drive/Subject_List.txt: No such file or directory
当我尝试使用终端一次复制一个文件时,它会使用我在此脚本中放入的确切命令进行复制。当我尝试在下面的脚本中使用它时,我不确定为什么它无法识别该目录。非常感谢任何帮助!
#!/bin/bash
#A bash script to copy the structural and functional files into the HCP_Entropy folder
#subject list
SUBJECT_LIST="/Volumes/Seagate/Backup/Plus/Drive/Subject_List.txt
for j in $(cat ${SUBJECT_LIST}); do
echo ${j}
cp /Volumes/Seagate\ Backup\ Plus\ Drive/HCP_DATA/Structural/{j}/unprocessed/3T/T1w_MPR1/${j}_3T_T1w_MPR1.nii.gz /Users/myname/Box/HCP_Entropy/BEN/${j}/anat
done
解决方法
线
$SUBJECT_LIST=/Volumes/Seagate\ Backup\ Plus\ Drive/Subject_List.txt
是假的。
要为变量赋值,不得添加 $
说明符。
以 $
开头的标记将被扩展,因此 $SUBJECT_LIST=...
将首先扩展为 =...
(因为您尚未将任何内容分配给 {{1} } 变量但它是空的)。
正确的方法是:
SUBJECT_LIST
(这使用引号而不是转义每个空格,我发现它更具可读性)
如果变量包含空格,您还需要引用它们,否则它们可能会被命令 (SUBJECT_LIST="/Volumes/Seagate Backup Plus Drive/Subject_List.txt"
) 解释为多个参数。
cp
当然,您应该检查源文件是否确实存在,就像目标目录一样。
for j in $(cat "${SUBJECT_LIST}"); do
# ...
done
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。