[英]Linux cp with variables
我想复制一个由Linux bash
文件中的变量指定的文件。
这是怎么回事不工作:
molecules = (1butene E2butene)
for molecule in ${molecules[*]}
do
### some stuff (works)
formchk $molecule.chk $molecule.fchk
### cp doesn't work
cp $molecule.com ${molecule}_scan.com
done
有任何想法吗?
编辑:当我删除空格周围的“ =”时,它也不起作用。 cp不会引发任何错误,但是我没有得到另一个名为Molecular_scan.com的文件
我可以看到的主要问题是作业中=
周围的空格:
molecules=(1butene E2butene)
for molecule in "${molecules[@]}"
do
### some stuff (works)
formchk "$molecule.chk" "$molecule.fchk"
### cp doesn't work
cp "$molecule.com" "${molecule}_scan.com"
done
我更改的其他内容是使用@
而不是*
,以将数组扩展为循环的单词列表。 我还为所有变量扩展添加了引号,尽管在这种特定情况下没有必要,但这是一个很好的习惯。
删除作业中的空白:
molecules=(1butene E2butene)
外壳在空格处分隔单词,并且赋值必须读取name=value
。
请注意,在您的特定情况下,您不需要非标准的shell数组。 只需写
molecules="1butene E2butene"
for molecule in $molecules
do
### some stuff (works)
formchk $molecule.chk $molecule.fchk
### cp doesn't work
cp $molecule.com ${molecule}_scan.com
done
如果您无法弄清为什么脚本中的某些内容无法按预期运行,可以通过在脚本的其余部分之前添加带有set -x
的行来跟踪执行情况。
似乎这是下划线的问题,这有效:
cp $molecule.com ${molecule}\_scan.com
无论如何,谢谢您的帮助:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.