我每次在工作目錄中運行腳本時都會生成文件(testfile)。我必須將生成的文件複製到目錄(testfolder)並使其增加一個.ext用於增加擴展名的Unix shell腳本
如果腳本第一次運行,則將測試文件複製到testfolder作爲「testfile.0」,並在第二次運行時將測試文件複製到testfolder作爲「testfile.1」等等。
我的腳本:
#!/bin/sh
file="testfile"
n=1
ls folder/${file}* | while read i
do
if [ folder/${file}.${n} = ${i} ]
then
n=$(($n + 1))
fi
done
cp testfile folder/${file}.${n}
這只是第一個增量「的文件夾/ testfile.0」
做得好;你能否刪除第二行'='周圍的空格?他們違反命令。 A quibble:數學表達式的''[]'語法顯然已被棄用(參見http://wiki.bash-hackers.org/syntax/expansion/arith);因此,'$((n_max + 1))'是更安全的選擇 另外:如果在排序時處理整數的字符串表示,'-n'('--numeric-sort')顯然比' -g'('--general-numeric-sort') - 參見http://stackoverflow.com/a/1255800/45375 – mklement0
@ mkelement0:非常感謝您提出的寶貴意見,所做的更改已完成。 – Bentoy13
我的榮幸。您的解決方案是OP方法的絕佳替代方案;它促使我研究''[]'構造(我以前從未見過)和(最後,總是想知道)'sort'的'-n'和'-g'選項之間的區別。 – mklement0