Я очень новичок в написании сценариев и написании сценариев для проекта. У меня проблема при выполнении "stat" для имени файла, чтобы проверить размер, в котором есть пробелы. Проблема в том, что я не могу написать команду напрямую, и сначала я должен сохранить ее в переменной, а затем выполнить ее через эту переменную. Например, мой скрипт:
##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', чтобы передать имя файла с пробелом в качестве параметра. когда я выполняю это, тогда я получаю:
[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 я думаю, что shell рассматривает команду как единое целое, не разбивая ее на части, и если я удаляю эту настройку IFS, то она говорит:
[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:
Поэтому он рассматривает параметр как два разных файла. Я не могу использовать "$ @" также потому, что получаю имя файла из какой-то другой логики перечисления файлов в каталоге, например
for i in 'find ${arg} -type f'
do
calling the test.sh
done
Пожалуйста, помогите мне как можно скорее .. !! Заранее спасибо....!!