Shell 我的语法是错的还是完全错了?
然后 我正在尝试使用以下命令使var1具有整数值: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
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"