Bir proje için komut dosyası yazma ve komut dosyası yazma konusunda çok yeniyim. İçinde boşluk olan boyutu kontrol etmek için, bir dosya adına "stat" yaparken bir sorun yaşıyorum. Sorun şu ki, komutu doğrudan yazamıyorum ve önce onu bir değişkende saklamalıyım, sonra da bu değişken üzerinden çalıştırmalıyım. Örneğin betiğim:
##test.sh
###Start
OIFS=$IFS
IFS=$'\n'
filename=$1
a=stat
b=-c
c=%s
d=${filename}
CMD="$a $b $c $d"
result=`$CMD`
echo "Size is:"$result
IFS=$OIFS
###END
IFS = $ '\ n' değerini, içinde boşluk olan dosya adını parametre olarak iletecek şekilde ayarlıyorum. çalıştırdığımda şunu alıyorum:
[root@abhargava ~]# ./test.sh dirLevel1/file\ Level1.txt
./test.sh: line 9: stat -c %s dirLevel1/file Level1.txt: No such file or directory
Size is:
IFS nedeniyle, sanırım kabuğun komutu parçalara bölmeden tek bir birim olarak ele aldığını ve bu IFS ayarını kaldırırsam şöyle diyor:
[root@abhargava ~]# ./test.sh dirLevel1/file\ Level1.txt
stat: cannot stat `dirLevel1/file': No such file or directory
stat: cannot stat `Level1.txt': No such file or directory
Size is:
Bu yüzden parametreye iki farklı dosya gibi davranıyor. Ben de "$ @" kullanamıyorum çünkü dosya ismini başka bir dosya dizinindeki başka bir mantıktan alıyorum.
for i in 'find ${arg} -type f'
do
calling the test.sh
done
Lütfen en kısa sürede bana yardım et .. !! Şimdiden teşekkürler....!!