I am writing a UNIX script that reads the size of a text file and if the file is of some size it should print the text file. If it is not an else loop executes and the process c
I wouldn't recomment stat
which is not portable not being specified by POSIX.
Here is a safer way to get the file size in a variable.
size=$(ls -dnL -- "${filepath}/{filename}.lst" | awk '{print $5;exit}')
You can use the stat
command which eliminates the need to use awk
.
For example in in linux with bash where myfile is your file path:
sz=$(stat -c '%s' myfile)
if [ $sz -eq 100 ]; then
echo "myfile is 100 bytes"
fi
Take note of the equality command -eq
that's the arithmetic binary operator in bash.
Alternatively you can use a variable for the file path:
f=my/file/path
sz=$(stat -c '%s' $f)
if [ $sz -eq 100 ]; then
echo "$f is 100 bytes"
fi
Simply put it as-
var=$(ls -l ${filepath}/{filename}.lst | awk '{print $5}')
Assign your file size in a variable and then check equality with -eq
size=`ls -l ${filepath}/{filename}.lst| awk '{print $5}'`
if [ $size -eq 461 ]
then
echo "MATCHED"
else
echo "NOT MATCHED"
fi