簡體   English   中英

帶有變量的Linux cp

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM