[英]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.