Error [: -lt: unary operator expected in shell script Linux
I get error [: -lt: unary operator expected after run below script, anyone can share ideas?
temp=0
while [ $temp -lt 25 ]
do
sleep 1
echo "running.."
if [ $temp -eq 5 ]
then
top -bc -d 5 -n 1|sed -n '7,8p'|awk '{print $1,$9}'>>out.txt
temp=`expr $temp +1`
break
elif [ $temp -eq 20 ]
then
top -bc -d 5 -n 1|sed -n '7,8p'|awk '{print $1,$9}'>>out.txt
temp=`expr $temp +1`
else
temp=`expr $temp +1`
fi
done
linux shell-script test
New contributor
add a comment |
I get error [: -lt: unary operator expected after run below script, anyone can share ideas?
temp=0
while [ $temp -lt 25 ]
do
sleep 1
echo "running.."
if [ $temp -eq 5 ]
then
top -bc -d 5 -n 1|sed -n '7,8p'|awk '{print $1,$9}'>>out.txt
temp=`expr $temp +1`
break
elif [ $temp -eq 20 ]
then
top -bc -d 5 -n 1|sed -n '7,8p'|awk '{print $1,$9}'>>out.txt
temp=`expr $temp +1`
else
temp=`expr $temp +1`
fi
done
linux shell-script test
New contributor
1
Do you also get errors fromexpr
?
– Michael Homer
3 hours ago
no error shown on expr
– Shi Jie Tio
3 hours ago
Use More Quotes™
– l0b0
2 hours ago
add a comment |
I get error [: -lt: unary operator expected after run below script, anyone can share ideas?
temp=0
while [ $temp -lt 25 ]
do
sleep 1
echo "running.."
if [ $temp -eq 5 ]
then
top -bc -d 5 -n 1|sed -n '7,8p'|awk '{print $1,$9}'>>out.txt
temp=`expr $temp +1`
break
elif [ $temp -eq 20 ]
then
top -bc -d 5 -n 1|sed -n '7,8p'|awk '{print $1,$9}'>>out.txt
temp=`expr $temp +1`
else
temp=`expr $temp +1`
fi
done
linux shell-script test
New contributor
I get error [: -lt: unary operator expected after run below script, anyone can share ideas?
temp=0
while [ $temp -lt 25 ]
do
sleep 1
echo "running.."
if [ $temp -eq 5 ]
then
top -bc -d 5 -n 1|sed -n '7,8p'|awk '{print $1,$9}'>>out.txt
temp=`expr $temp +1`
break
elif [ $temp -eq 20 ]
then
top -bc -d 5 -n 1|sed -n '7,8p'|awk '{print $1,$9}'>>out.txt
temp=`expr $temp +1`
else
temp=`expr $temp +1`
fi
done
linux shell-script test
linux shell-script test
New contributor
New contributor
edited 3 hours ago
Jeff Schaller
39.3k1054125
39.3k1054125
New contributor
asked 3 hours ago
Shi Jie TioShi Jie Tio
1163
1163
New contributor
New contributor
1
Do you also get errors fromexpr
?
– Michael Homer
3 hours ago
no error shown on expr
– Shi Jie Tio
3 hours ago
Use More Quotes™
– l0b0
2 hours ago
add a comment |
1
Do you also get errors fromexpr
?
– Michael Homer
3 hours ago
no error shown on expr
– Shi Jie Tio
3 hours ago
Use More Quotes™
– l0b0
2 hours ago
1
1
Do you also get errors from
expr
?– Michael Homer
3 hours ago
Do you also get errors from
expr
?– Michael Homer
3 hours ago
no error shown on expr
– Shi Jie Tio
3 hours ago
no error shown on expr
– Shi Jie Tio
3 hours ago
Use More Quotes™
– l0b0
2 hours ago
Use More Quotes™
– l0b0
2 hours ago
add a comment |
1 Answer
1
active
oldest
votes
Try changing all the +1
s after the expr
s to + 1
.
Without the space expr
will return an error and $temp
will be empty. If $temp
is empty, then the -lt
will be comparing a blank space to a number, which is why the error appears. Here's a one liner that reproduces the problem:
t=0;t=`expr $t +1`;[ $t -lt 25 ]
Output (to STDERR):
expr: syntax error
bash: [: -lt: unary operator expected
Better yet, change all code that uses the external util expr
to use the shell's own internal arithmetic expansion. So code like this:
temp=`expr $temp +1`
...should be changed to:
temp=$(($temp + 1))
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "106"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Shi Jie Tio is a new contributor. Be nice, and check out our Code of Conduct.
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%2f494333%2ferror-lt-unary-operator-expected-in-shell-script-linux%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Try changing all the +1
s after the expr
s to + 1
.
Without the space expr
will return an error and $temp
will be empty. If $temp
is empty, then the -lt
will be comparing a blank space to a number, which is why the error appears. Here's a one liner that reproduces the problem:
t=0;t=`expr $t +1`;[ $t -lt 25 ]
Output (to STDERR):
expr: syntax error
bash: [: -lt: unary operator expected
Better yet, change all code that uses the external util expr
to use the shell's own internal arithmetic expansion. So code like this:
temp=`expr $temp +1`
...should be changed to:
temp=$(($temp + 1))
add a comment |
Try changing all the +1
s after the expr
s to + 1
.
Without the space expr
will return an error and $temp
will be empty. If $temp
is empty, then the -lt
will be comparing a blank space to a number, which is why the error appears. Here's a one liner that reproduces the problem:
t=0;t=`expr $t +1`;[ $t -lt 25 ]
Output (to STDERR):
expr: syntax error
bash: [: -lt: unary operator expected
Better yet, change all code that uses the external util expr
to use the shell's own internal arithmetic expansion. So code like this:
temp=`expr $temp +1`
...should be changed to:
temp=$(($temp + 1))
add a comment |
Try changing all the +1
s after the expr
s to + 1
.
Without the space expr
will return an error and $temp
will be empty. If $temp
is empty, then the -lt
will be comparing a blank space to a number, which is why the error appears. Here's a one liner that reproduces the problem:
t=0;t=`expr $t +1`;[ $t -lt 25 ]
Output (to STDERR):
expr: syntax error
bash: [: -lt: unary operator expected
Better yet, change all code that uses the external util expr
to use the shell's own internal arithmetic expansion. So code like this:
temp=`expr $temp +1`
...should be changed to:
temp=$(($temp + 1))
Try changing all the +1
s after the expr
s to + 1
.
Without the space expr
will return an error and $temp
will be empty. If $temp
is empty, then the -lt
will be comparing a blank space to a number, which is why the error appears. Here's a one liner that reproduces the problem:
t=0;t=`expr $t +1`;[ $t -lt 25 ]
Output (to STDERR):
expr: syntax error
bash: [: -lt: unary operator expected
Better yet, change all code that uses the external util expr
to use the shell's own internal arithmetic expansion. So code like this:
temp=`expr $temp +1`
...should be changed to:
temp=$(($temp + 1))
edited 2 hours ago
answered 3 hours ago
agcagc
4,50311036
4,50311036
add a comment |
add a comment |
Shi Jie Tio is a new contributor. Be nice, and check out our Code of Conduct.
Shi Jie Tio is a new contributor. Be nice, and check out our Code of Conduct.
Shi Jie Tio is a new contributor. Be nice, and check out our Code of Conduct.
Shi Jie Tio is a new contributor. Be nice, and check out our Code of Conduct.
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.
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%2f494333%2ferror-lt-unary-operator-expected-in-shell-script-linux%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
1
Do you also get errors from
expr
?– Michael Homer
3 hours ago
no error shown on expr
– Shi Jie Tio
3 hours ago
Use More Quotes™
– l0b0
2 hours ago