Strona główna Ubuntu C++ Hardware HTML i javascript Java Software SQL

Awk|Bash – C++, zwiększanie wersji pliku w nazwie za pomocą skryptu.

Dodano: 2012-08-04

Skrypt poniżej umożliwia zwiększanie automatycznie wersji pliku np.: klas, zbioru danych (tutaj należy zmodyfikować skrypcik). Przykładowo pracując nad klasą o nazwie Class_0.1.h można za pomocą tego skryptu automatycznie zwiększać jego wersje w nazwie wraz z rozwojem prac nad nią kolejno Class_0.2.h, Class_0.3.h itd.

Skrypt przyjmuję jeden parametr którym jest nazwa pliku, którego wersja ma być podwyższona. Nazwa pliku powinna spełniać schemat [nameFile][versionFile][extension] np.: Class_0.1.h gdzie:

  • [nameFile] Class_
  • [versionFile] 0.1
  • [extension] .h

Przykładowe użycie dla pliku Class_0.1.h zakładając, że skrypt nazywa się increase_version.bash

./increase_version.bash Class_

#!/bin/bash
echo "The script increase version of class file.";
echo "";

if [ "$1" = "" ]; then
	echo "";
	echo "Argument does not exist!!!";
	exit 102;
fi;



ls | grep "$1*" | awk -vn=$1 'BEGIN{
	versionHFile = "";
	versionCFile = "";
	lw = length($0);
}{
	print $0;
	posExt = index($0, ".h");
	if (posExt != 0){
		ls = length(n);
		versionHFile = substr($0, ls+1, (lw - (lw - posExt +1)-ls));
	} else {
		posExt = index($0, ".cpp");
		if (posExt != 0){
		       	ls = length(n);
		        versionCFile = substr($0, ls+1, (lw - (lw - posExt +1)-ls));
		}
	}

}END{
	if (versionHFile != ""){
		print "Increase version...";	
		versionHFileNew = versionHFile + 0.1;
		ext = ".h";
		if (((versionHFileNew % 2) == 0) || ((versionHFileNew % 2) == 1))
			ext = ".0"ext;
		print "cp "n""versionHFile".h "n""versionHFileNew""ext;
		system("cp "n""versionHFile".h "n""versionHFileNew""ext);
	}

	if (versionCFile != ""){
		print "Increase version...";
                versionCFileNew = versionCFile + 0.1;
		ext = ".cpp";
		if (((versionCFileNew % 2) == 0) || ((versionCFileNew % 2) == 1))
			ext = ".0"ext;
		print "cp "n""versionCFile".cpp "n""versionCFileNew""ext;
		system("cp "n""versionCFile".cpp "n""versionCFileNew""ext);
	}
}'

exit 0;