我目前的解決方案,由於其大小,我不喜歡。如果有人找到更清潔的人,我會很樂意接受他們的。
這裏假定test_output_file
是默認文件名。
- name: get next value of test_output_file to avoid overwrites
shell: |
path=$(dirname "{{ test_output_file }}")
filename=$(basename "{{ test_output_file }}")
extension="${filename##*.}"
filename="${filename%.*}"
if [[ -e $path/$filename.$extension ]] ; then
i=2
while [[ -e $path/$filename-$i.$extension ]] ; do
let i++
done
filename=$filename-$i
fi
echo $path/$filename.$extension
register: result
changed_when: False
- name: increments test_output_file if needed
set_fact:
test_output_file: "{{ result.stdout_lines[0] }}"
when: test_output_file != result.stdout_lines[0]
YYYYMMDD-HHMMSS會工作嗎? – Matt
你「*想要一個簡單的解決方案*」?你確定你想發佈這個不是freelancer.com嗎? – techraf
@techraf這是因爲SO是獲取常見編碼問題最佳解決方案的最佳位置,就像這樣。如果沒有人發佈解決方案,請不要擔心,我會自己回答這個問題。不,日期戳是不可接受的,但如果有人想在bash中做到這一點,我會發現它是可以接受的,因爲我總是可以使用一個單獨的任務gets_next_filename。我目前的實施時間太長,我不想讓自己難堪。 – sorin