LINUX.ORG.RU

История изменений

Исправление Desmond_Hume, (текущая версия) :

#!/bin/bash

for a in /home/user/Documents/Test\ Files/*;
	do
		function filetype_is1 {
							
				echo $(file "$a" |  cut -d ":" -f 2 | cut -d " " -f 2)	
		}		

		if [ $(filetype_is1) = "directory" ]; then
			:
		else			
			if [ $(filetype_is1) = "Unicode" ]; then
				mv "$a" /home/user/Documents/Test\ Files/test/${a%}.converted
			else
				:
			fi
		fi
	done

for b in /home/user/Documents/Test\ Files/*;
	do
		function filetype_is2 {
			echo $(file "$b" |  cut -d ":" -f 2 | cut -d " " -f 2)	
		}

		if [ $(filetype_is2) = "directory" ]; then
			:
		else
			iconv -f WINDOWS-1251 -t UTF-8 "$b" -o "${b%}.converted" && mv "${b%}.converted" /home/user/Documents/Test\ Files/test/
		
		fi
	done 

for c in /home/user/Documents/Test\ Files/*;
	do 
		function filetype_is3 {
			echo $(file "$c" |  cut -d ":" -f 2 | cut -d " " -f 2)	
		}
		if [ $(filetype_is3) = "directory" ]; then
			:
		elif [ $(filetype_is3) = "ISO-8859" ]; then
			rm "$c"
		else
			:
		fi	
	done

Тогда почему в таком виде работает? Добился того, что function наконец нормально отрабатывает. Скрипт теперь работает так, как хотелось изначально.

Исходная версия Desmond_Hume, :

#!/bin/bash

for a in /home/user/Documents/Test\ Files/*;
	do
		function filetype_is1 {
							
				echo $(file "$a" |  cut -d ":" -f 2 | cut -d " " -f 2)	
		}		

		if [ $(filetype_is1) = "directory" ]; then
			:
		else			
			if [ $(filetype_is1) = "Unicode" ]; then
				mv "$a" /home/user/Documents/Test\ Files/test/${a%}.converted
			else
				:
			fi
		fi
	done

for b in /home/user/Documents/Test\ Files/*;
	do
		function filetype_is2 {
			echo $(file "$b" |  cut -d ":" -f 2 | cut -d " " -f 2)	
		}
#set +x	
		if [ $(filetype_is2) = "directory" ]; then
			:
		else
			iconv -f WINDOWS-1251 -t UTF-8 "$b" -o "${b%}.converted" && mv "${b%}.converted" /home/user/Documents/Test\ Files/test/
		
		fi
	done 

for c in /home/user/Documents/Test\ Files/*;
	do 
		function filetype_is3 {
			echo $(file "$c" |  cut -d ":" -f 2 | cut -d " " -f 2)	
		}
		if [ $(filetype_is3) = "directory" ]; then
			:
		elif [ $(filetype_is3) = "ISO-8859" ]; then
			rm "$c"
		else
			:
		fi	
	done

Тогда почему в таком виде работает? Добился того, что function наконец нормально отрабатывает. Скрипт теперь работает так, как хотелось изначально.