报错代码
binary operator expected
解决方法
将 if 判断中的变量,打上双引号 “”””
将以下内容:
......
if [ -z $1 ];then
......
修改为:
......
if [ -z "$1" ];then
......
(补充:这里以给 $1 变量打上双引号 “””” 为例)
binary operator expected
将 if 判断中的变量,打上双引号 “”””
将以下内容:
......
if [ -z $1 ];then
......
修改为:
......
if [ -z "$1" ];then
......
(补充:这里以给 $1 变量打上双引号 “””” 为例)
#!/bin/bash
while True;
do
sleep 1
echo "infinite loop"
done
或者:
#!/bin/bash
while ((1));
do
sleep 1
echo "infinite loop"
done
或者:
#!/bin/bash
while :
do
sleep 1
echo "infinite loop"
done
#!/bin/bash
i=1;n=5
while ((i <= n))
do
echo $i
let i++
done
或者:
#!/bin/bash
i=1;n=5
while [[ $i -le $n ]]
do
echo $i
let i++
done
#!/bin/bash
i=1
while ((i <= 5));
do
let sum=$sum+$i
let i++
done
echo $sum
或者:
#!/bin/bash
i=1
while [[ $i -le 5 ]];
do
let sum=$sum+$i
let i++
done
echo $sum
#!/bin/bash
sum=0
echo 'Please input numbers, you must press 'enter' after inputting each number, press 'ctrl' and 'd' at the same time to end the input"
while read num
do
let sum=$sum+$num
done
echo $sum
#!/bin/bash
while read line
do
echo $line
done < test.txt
或者:
#!/bin/bash
cat test.txt | {
while read line
do
echo $line
done }
或者:
#!/bin/bash
cat test.txt | while read line
do
echo $line
done
(补充:这里以阅读 test.txt 文件为例)
# vi test.txt
创建以下内容:
no1 user1 test1.txt
no2 user2 test2.txt
no3 user3 test3.txt
no4 user4 test4.txt
no5 uesr5 test5.txt
# cat test.txt | while read no user file ;do echo $no $file;done
no1 test1.txt
no2 test2.txt
no3 test3.txt
no4 test4.txt
no5 test5.txt
对将要执行的命令进行 2 次扫描,第 1 次扫描时把扫描的内容替换成命令,第 2 次扫描时执行扫描到的命令
# url=eternalcenter.com
(补充:这里以将内容 eternalcenter.com 赋值给变量 url 为例)
# echo $url
eternalcenter.com
或者:
# eval echo $url
eternalcenter.com
(补充:这里以显示变量 url 里的内容 eternalcenter.com 为例)
# command=pwd
(补充:这里以将命令 pwd 赋值给变量 command 为例)
# echo $command
pwd
(补充:这里以显示变量 command 里的 pwd 命令为例)
# eval $command
/root
(补充:这里以执行变量 command 里的 pwd 命令为例)
# vim test.sh
创建以下内容:
#!/bin/bash
eval echo \$$#
(补充:这里创建名为 test.sh 的脚本为例)
# . test.txt a b c d e
e
(补充:这里执行名为 test.sh 的脚本并附带 a b c d e 5 个位置变量为例)
# url=eternalcenter.com
(补充:这里以将内容 eternalcenter.com 赋值给变量 url 为例)
# pointer=url
(补充:这里以让指针 pointer 指向 url 变量为例)
# echo $pointer
url
(补充:这里以显示指针 pointer 指向的变量 url 为例)
# eval echo \$$pointer
eternalcenter.com
(补充:这里以显示指针 pointer 指向的最终内容 eternalcenter.com 为例)
# value=
# newvalue=${value:-eternalcenter}
# echo $newvalue
eternalcenter
# value=mingyuzhu
# newvalue=${value:-eternalcenter}
# echo $newvalue
mingyuzhu
或者:
# value=
# newvalue=${value:=eternalcenter}
# echo $newvalue
eternalcenter
# value=mingyuzhu
# newvalue=${value:=eternalcenter}
# echo $newvalue
mingyuzhu
(补充:这里以当变量 value 存在且为空时则变量 newvalue 的值为 eternalcenter 为例)
# value=
# newvalue=${value:+eternalcenter}
# echo $newvalue
# value=mingyuzhu
# newvalue=${value:+eternalcenter}
# echo $newvalue
eternalcenter
(补充:这里以当变量 value 存在且不为空时则变量 newvalue 的值为 eternalcenter 为例)
# str=eternalcenter.com
# echo ${str::2}
et
或者:
# str=eternalcenter.com
# echo ${str:0:2}
et
或者:
# str=eternalcenter.com
# echo ${str:offset:2}
et
(补充:这里以截取字符串中从左数第 2 个字符和左边的所有内容为例)
# str=eternalcenter.com
echo ${str::0-2}
eternalcenter.c
(补充:这里以截取字符串中从右数第 2 个字符开始左边的所有内容为例)
# str=eternalcenter.com
# echo ${str:0-2}
om
(补充: 截取字符串中从除右数第 2 个字符开始到右边的所有内容)
# str=eternalcenter.com
# echo ${str:5:4}
alce
(补充:这里以截取字符串中从左数第 5 个字符开始 4 个字符的内容为例)
(注意:在此情况下是从第 0 字符开始数第 1 个字符的,而不是从第 1 个字符开始数第 1 个字符)
# str=eternalcenter.com
# echo ${str:0-5:4}
r.co
(补充:这里以截取字符串中从右数第 5 个字符开始右边 4 个字符的内容为例)
(注意:在此情况下是从第 0 字符开始数第 1 个字符的,而不是从第 1 个字符开始数第 1 个字符)
# str=eternalcenter.com
# echo ${str:1:-4}
ternalcenter
(补充:这里以截取字符串中从左数第 1 个字符到右数第 4 个字符中的所有内容为例)
(注意:在此情况下是从第 0 字符开始数第 1 个字符的,而不是从第 1 个字符开始数第 1 个字符)
# str=eternalcenter.com
# echo ${str:0-5:0-1}
r.co
或者:
# str=eternalcenter.com
# echo ${str:0-5:-1}
r.co
(补充:这里以截取字符串中从右数第 1 个字符到从右数第 4 个字符中的所有内容为例)
(注意:在此情况下是从第 0 字符开始数第 1 个字符的,而不是从第 1 个字符开始数第 1 个字符)
# str=eternalcenter.com
# echo ${str:2}
ernalcenter.com
(补充:截取字符串中从除左数第 2 个字符开始到右边的所有内容)
# value=ming:yu:zhu
# newvalue=${value%:*}
# echo $newvalue
ming:yu
(补充:这里以截取变量 value 右数第 1 个冒号 “:” 左边的所有值并赋予给变量 newvalue 为例)
# value=ming:yu:zhu
# newvalue=${value%%:*}
# echo $newvalue
ming
(补充:这里以截取变量 value 右数最后 1 个冒号 “:” 左边的所有并赋予给变量 newvalue 内容为例)
# value=mingyuzhu
# novalue=zhu
# newvalue=${value%%$novalue}
# echo $newvalue
mingyu
(补充:这里以截取变量 value 右数最后 1 个 zhu 左边的所有内容并赋予给变量 newvalue 为例)
# value=ming:yu:zhu
# newvalue=${value#*:}
# echo $newvalue
yu:zhu
(补充:这里以截取变量 value 左数第 1 个冒号 “:” 右边的所有内容并赋予给变量 newvalue 为例)
# value=ming:yu:zhu
# newvalue=${value##*:}
# echo $newvalue
zhu
(补充:这里以截取变量 value 左数最后 1 个冒号 “:” 右边的所有内容并赋予给变量 newvalue 为例)
# value=mingyuzhu
# novalue=ming
# newvalue=${value##$novalue}
# echo $newvalue
yuzhu
(补充:这里以截取变量 value 左数最后 1 个 ming 右边的所有内容并赋予给变量 newvalue 为例)
# value=mingyuzhu
# noneedvalue=yu
# needvalue=zhu
# newvalue=${value/$noneedvalue/$needvalue}
# echo $newvalue
mingzhuzhu
(补充:这里以将变量 value 中的 yu 替换成 zhu 并赋予给变量 newvalue 为例)
1) ==,若两个数值存在且相等,则结果为真
2) !=,若两个数值存在且不相等,则结果为真
3) >,若两个数值存在且前一个数值大于后一个数值,则结果为真
4) <,若两个数值存在且前一个数值小于后一个数值,则结果为真
5) >=,若两个数值存在且前一个数值大于或等于后一个数值,则结果为真
6) <=,若两个数值存在且前一个数值小于或等于后一个数值,则结果为真
7) + ,加法
8) – ,减法
9) * ,乘法
10) / ,除法
11) % ,求余
==,若两个字符串存在且一样,则结果为真
# (( 0 -ne 1 ))
# echo $?
0
(补充:这里以测试数字 0 是否不等于数字 1 为例)
# (( a == a ))
# echo $?
0
(补充:这里以测试字符串 a 是否等于字符串 a 为例)
# a=1
# b=2
# c=$(($a + $b))
# echo $c
3