Linux Shell脚本非法编号
我试图通过以下代码找出文件中模式的出现次数:Linux Shell脚本非法编号,linux,shell,grep,Linux,Shell,Grep,我试图通过以下代码找出文件中模式的出现次数: #!/bin/sh var='grep -c 'abc' file1' if [ "$var" -lt 10 ]; then echo "less than 10" fi 我得到错误:非法号码:grep-c abc file1 有人能帮忙吗 谢谢。您可能想要倒勾(`),而不是单引号(`)。i、 e: 您可能需要倒勾(`)而不是单引号(')。i、 e: 使用反勾号(`)代替撇号('): 使用反勾号(`)代替撇号('): 您使用了单引号而
#!/bin/sh
var='grep -c 'abc' file1'
if [ "$var" -lt 10 ]; then
echo "less than 10"
fi
我得到错误:非法号码:grep-c abc file1
有人能帮忙吗
谢谢。您可能想要倒勾(`),而不是单引号(`)。i、 e:
您可能需要倒勾(`)而不是单引号(')。i、 e: 使用反勾号(`)代替撇号('): 使用反勾号(`)代替撇号('):
您使用了单引号而不是反勾号,因此
var
变量实际上设置为字符串文字,而不是该命令的结果。如果您首先回显变量,您会看到:
pax$ var='grep -c 'abc' file1'
pax$ echo "[$var]"
[grep -c abc file1]
反勾选版本为:
var=`grep -c 'abc' file1`
但我建议尽可能使用bash
编写脚本。您将很难找到一个默认情况下没有它的主流发行版,而且有些人认为它比其他shell更强大。事实上,在某些系统上,/bin/sh
是bash
如果你可以这样做,$()
构造通常是一个更好的主意,因为你可以轻松地嵌套它们:
var=$(grep -c 'abc' file1)
您使用了单引号而不是反勾号,因此
var
变量实际上设置为字符串文字,而不是该命令的结果。如果您首先回显变量,您会看到:
pax$ var='grep -c 'abc' file1'
pax$ echo "[$var]"
[grep -c abc file1]
反勾选版本为:
var=`grep -c 'abc' file1`
但我建议尽可能使用bash
编写脚本。您将很难找到一个默认情况下没有它的主流发行版,而且有些人认为它比其他shell更强大。事实上,在某些系统上,/bin/sh
是bash
如果你可以这样做,$()
构造通常是一个更好的主意,因为你可以轻松地嵌套它们:
var=$(grep -c 'abc' file1)
尝试发布以下内容以获得更好的答案:
grep--version
如果您的shell是bash,请告诉我们您正在使用哪个shellbash--version
- 在back ticks中使用grep或如下所示
在Bash中比[[
更通用[
#!/bin/bash
var=$(grep -c "abc" file1)
if [[ "$var" -lt 10 ]]
then
echo "less than 10"
fi
执行:
user@machine:~$ cat file1
abc
abcd
abcde
abcdef
user@machine:~$
user@machine:~$ ./t.sh
less than 10
user@machine:~$
尝试发布以下内容以获得更好的答案:
grep--version
如果您的shell是bash,请告诉我们您正在使用哪个shellbash--version
- 在back ticks中使用grep或如下所示
在Bash中比[[
更通用[
#!/bin/bash
var=$(grep -c "abc" file1)
if [[ "$var" -lt 10 ]]
then
echo "less than 10"
fi
执行:
user@machine:~$ cat file1
abc
abcd
abcde
abcdef
user@machine:~$
user@machine:~$ ./t.sh
less than 10
user@machine:~$