Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 我的语法是错的还是完全错了?_Shell_Unix - Fatal编程技术网

Shell 我的语法是错的还是完全错了?

Shell 我的语法是错的还是完全错了?,shell,unix,Shell,Unix,然后 我正在尝试使用以下命令使var1具有整数值: echo "it worked" fi 我不确定它是否真的将值设置为我假定命令正在输出的值,因为在我的echo“$var1”中,它正在回显我期望的值。然而,在我的发言中: grep "$1" ./[FILE] | wc -l 我不断地收到一个非法的数字错误。你最好还是这样做 if [ -s ./[FILE] ] && [ "$var1" -eq 1] 关于这一点: -c, --count Only a

然后

我正在尝试使用以下命令使var1具有整数值:

echo "it worked"

fi
我不确定它是否真的将值设置为我假定命令正在输出的值,因为在我的echo“$var1”中,它正在回显我期望的值。然而,在我的发言中:

 grep "$1" ./[FILE] | wc -l

我不断地收到一个非法的数字错误。

你最好还是这样做

if [ -s ./[FILE] ] && [ "$var1" -eq 1]
关于这一点:

-c, --count
         Only a count of selected lines is written to standard output.
在shell脚本中,赋值中的
=
两边都不能有空格。按照第一行的读取方式,在为
var1
分配一个空字符串之后,您正在运行
grep
。我怀疑您的意图是捕获
wc
的输出,并将该值分配给
var1
,正如另一个答案所指出的:

var1= grep "$1" ./[FILE] | wc -l
if [ -s ./[FILE] ] && [ "$var1" -eq 1 ]
但是,正如所指出的,您可以将
wc
部分更改为

var1=$(grep "$1" ./[FILE] | wc -l)
还有一个观察结果——如果你的
[文件]
大小为零,
grep
无论如何都找不到任何东西,所以真的不需要整个
if…&&构造。相反,这两条线可以是:

var1=$(grep -c "$1" ./[FILE])
如果
echo
位是一个命令,则该命令甚至可以缩短为:

if (( $(grep -c "$1" ./[FILE]) == 1 ))
then
  echo "it worked"
....

你不能在shell脚本中使用像
这样的HTML标记。你不能只显示你的脚本吗?它实际上不是一个很大的脚本,因为它只需要搜索一个文件以确保它包含一个字符串(userid),然后输出另一个字符串(此人的姓名)。本练习的重点是了解if语句在shell脚本中是如何工作的,但这也是一种可能性。谢谢,我事先不知道太空的事。
var1=$(grep -c "$1" ./[FILE])
if (( $(grep -c "$1" ./[FILE]) == 1 ))
then
  echo "it worked"
....
(( $(grep -c "$1" ./[FILE]) == 1 )) && echo "it worked"