BASH Program to remove files, Integer expression expected
up vote
1
down vote
favorite
#
# if MAXFILES is not set, set to 10
#
if [ -z "MAXFILES" ]
then
MAXFILES=10
fi
#
# now check to see if the number of files being removed is > MAXFILES
# but only if MAXFILES = 0
#
if [ $# -gt "$MAXFILES" -a "$MAXFILES" -ne 0 ]
then
# if it is, prompt user before removing files
echo "Remove $# files (y/n)? c"
read reply
if [ "$reply" = y ]
then
rm "$@"
else
echo "files not removed"
fi
else
# number of args <= MAXFILES
rm "$@"
fi
The above program I have to remove files. However when I attempt to run it, its telling me that
line 15: [: : integer expression expected
bash
add a comment |
up vote
1
down vote
favorite
#
# if MAXFILES is not set, set to 10
#
if [ -z "MAXFILES" ]
then
MAXFILES=10
fi
#
# now check to see if the number of files being removed is > MAXFILES
# but only if MAXFILES = 0
#
if [ $# -gt "$MAXFILES" -a "$MAXFILES" -ne 0 ]
then
# if it is, prompt user before removing files
echo "Remove $# files (y/n)? c"
read reply
if [ "$reply" = y ]
then
rm "$@"
else
echo "files not removed"
fi
else
# number of args <= MAXFILES
rm "$@"
fi
The above program I have to remove files. However when I attempt to run it, its telling me that
line 15: [: : integer expression expected
bash
5
You're missing the dollar sign inif [ -z "MAXFILES" ]
.
– Mikel
Dec 2 '14 at 16:36
3
You can assign variable in easy way:if [ $# -gt "${MAXFILES:=10}" -a "$MAXFILES" -ne 0 ]
is enough without above lines
– Costas
Dec 2 '14 at 16:45
add a comment |
up vote
1
down vote
favorite
up vote
1
down vote
favorite
#
# if MAXFILES is not set, set to 10
#
if [ -z "MAXFILES" ]
then
MAXFILES=10
fi
#
# now check to see if the number of files being removed is > MAXFILES
# but only if MAXFILES = 0
#
if [ $# -gt "$MAXFILES" -a "$MAXFILES" -ne 0 ]
then
# if it is, prompt user before removing files
echo "Remove $# files (y/n)? c"
read reply
if [ "$reply" = y ]
then
rm "$@"
else
echo "files not removed"
fi
else
# number of args <= MAXFILES
rm "$@"
fi
The above program I have to remove files. However when I attempt to run it, its telling me that
line 15: [: : integer expression expected
bash
#
# if MAXFILES is not set, set to 10
#
if [ -z "MAXFILES" ]
then
MAXFILES=10
fi
#
# now check to see if the number of files being removed is > MAXFILES
# but only if MAXFILES = 0
#
if [ $# -gt "$MAXFILES" -a "$MAXFILES" -ne 0 ]
then
# if it is, prompt user before removing files
echo "Remove $# files (y/n)? c"
read reply
if [ "$reply" = y ]
then
rm "$@"
else
echo "files not removed"
fi
else
# number of args <= MAXFILES
rm "$@"
fi
The above program I have to remove files. However when I attempt to run it, its telling me that
line 15: [: : integer expression expected
bash
bash
edited Nov 25 at 22:44
Rui F Ribeiro
38.3k1477127
38.3k1477127
asked Dec 2 '14 at 16:26
Dport86
111
111
5
You're missing the dollar sign inif [ -z "MAXFILES" ]
.
– Mikel
Dec 2 '14 at 16:36
3
You can assign variable in easy way:if [ $# -gt "${MAXFILES:=10}" -a "$MAXFILES" -ne 0 ]
is enough without above lines
– Costas
Dec 2 '14 at 16:45
add a comment |
5
You're missing the dollar sign inif [ -z "MAXFILES" ]
.
– Mikel
Dec 2 '14 at 16:36
3
You can assign variable in easy way:if [ $# -gt "${MAXFILES:=10}" -a "$MAXFILES" -ne 0 ]
is enough without above lines
– Costas
Dec 2 '14 at 16:45
5
5
You're missing the dollar sign in
if [ -z "MAXFILES" ]
.– Mikel
Dec 2 '14 at 16:36
You're missing the dollar sign in
if [ -z "MAXFILES" ]
.– Mikel
Dec 2 '14 at 16:36
3
3
You can assign variable in easy way:
if [ $# -gt "${MAXFILES:=10}" -a "$MAXFILES" -ne 0 ]
is enough without above lines– Costas
Dec 2 '14 at 16:45
You can assign variable in easy way:
if [ $# -gt "${MAXFILES:=10}" -a "$MAXFILES" -ne 0 ]
is enough without above lines– Costas
Dec 2 '14 at 16:45
add a comment |
1 Answer
1
active
oldest
votes
up vote
2
down vote
The problem is here:
if [ -z "MAXFILES" ]
then
MAXFILES=10
fi
# ...
if [ $# -gt "$MAXFILES" -a "$MAXFILES" -ne 0 ]
You are checking to see whether the string MAXFILES
is zero. Since it's not, $MAXFILES
never gets set, and so your later test is lexing as:
if [ $# -gt "" -a "" -ne 0 ]
This is why it's complaining about needing an integer.
What you want to do is this:
if [[ -z "$MAXFILES" ]]; then
MAXFILES=10
fi
The difference is the dollar sign, which you are missing. Also, I tend to use [[ ]]
rather than [ ]
for tests (when using bash
) as they have some nice built-in sanity checks and are more versatile than [
and test
.
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
2
down vote
The problem is here:
if [ -z "MAXFILES" ]
then
MAXFILES=10
fi
# ...
if [ $# -gt "$MAXFILES" -a "$MAXFILES" -ne 0 ]
You are checking to see whether the string MAXFILES
is zero. Since it's not, $MAXFILES
never gets set, and so your later test is lexing as:
if [ $# -gt "" -a "" -ne 0 ]
This is why it's complaining about needing an integer.
What you want to do is this:
if [[ -z "$MAXFILES" ]]; then
MAXFILES=10
fi
The difference is the dollar sign, which you are missing. Also, I tend to use [[ ]]
rather than [ ]
for tests (when using bash
) as they have some nice built-in sanity checks and are more versatile than [
and test
.
add a comment |
up vote
2
down vote
The problem is here:
if [ -z "MAXFILES" ]
then
MAXFILES=10
fi
# ...
if [ $# -gt "$MAXFILES" -a "$MAXFILES" -ne 0 ]
You are checking to see whether the string MAXFILES
is zero. Since it's not, $MAXFILES
never gets set, and so your later test is lexing as:
if [ $# -gt "" -a "" -ne 0 ]
This is why it's complaining about needing an integer.
What you want to do is this:
if [[ -z "$MAXFILES" ]]; then
MAXFILES=10
fi
The difference is the dollar sign, which you are missing. Also, I tend to use [[ ]]
rather than [ ]
for tests (when using bash
) as they have some nice built-in sanity checks and are more versatile than [
and test
.
add a comment |
up vote
2
down vote
up vote
2
down vote
The problem is here:
if [ -z "MAXFILES" ]
then
MAXFILES=10
fi
# ...
if [ $# -gt "$MAXFILES" -a "$MAXFILES" -ne 0 ]
You are checking to see whether the string MAXFILES
is zero. Since it's not, $MAXFILES
never gets set, and so your later test is lexing as:
if [ $# -gt "" -a "" -ne 0 ]
This is why it's complaining about needing an integer.
What you want to do is this:
if [[ -z "$MAXFILES" ]]; then
MAXFILES=10
fi
The difference is the dollar sign, which you are missing. Also, I tend to use [[ ]]
rather than [ ]
for tests (when using bash
) as they have some nice built-in sanity checks and are more versatile than [
and test
.
The problem is here:
if [ -z "MAXFILES" ]
then
MAXFILES=10
fi
# ...
if [ $# -gt "$MAXFILES" -a "$MAXFILES" -ne 0 ]
You are checking to see whether the string MAXFILES
is zero. Since it's not, $MAXFILES
never gets set, and so your later test is lexing as:
if [ $# -gt "" -a "" -ne 0 ]
This is why it's complaining about needing an integer.
What you want to do is this:
if [[ -z "$MAXFILES" ]]; then
MAXFILES=10
fi
The difference is the dollar sign, which you are missing. Also, I tend to use [[ ]]
rather than [ ]
for tests (when using bash
) as they have some nice built-in sanity checks and are more versatile than [
and test
.
answered Dec 2 '14 at 17:39
DopeGhoti
42.8k55181
42.8k55181
add a comment |
add a comment |
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f171087%2fbash-program-to-remove-files-integer-expression-expected%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
5
You're missing the dollar sign in
if [ -z "MAXFILES" ]
.– Mikel
Dec 2 '14 at 16:36
3
You can assign variable in easy way:
if [ $# -gt "${MAXFILES:=10}" -a "$MAXFILES" -ne 0 ]
is enough without above lines– Costas
Dec 2 '14 at 16:45