gpt4 book ai didi

linux - 为什么我在数字比较时收到命令未找到错误?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:51:40 26 4
gpt4 key购买 nike

我正在尝试解析文件的每一行并查找特定的字符串。该脚本似乎正在执行其预期的工作,但是,它同时尝试在第 6 行执行 if 命令:

#!/bin/bash
for line in $(cat $1)
do
echo $line | grep -e "Oct/2015"
if($?==0); then
echo "current line is: $line"
fi
done

我得到以下内容(我的脚本是 readlines.sh)

./readlines.sh: line 6: 0==0: command not found

最佳答案

首先:正如 Llama 先生所说,您需要更多空间。现在你的脚本试图寻找一个名为 /usr/bin/0==0 的文件来运行。相反:

[ "$?" -eq 0 ] # POSIX-compliant numeric comparison
[ "$?" = 0 ] # POSIX-compliant string comparison
(( $? == 0 )) # bash-extended numeric comparison

第二:在这种情况下根本不要测试 $?。事实上,您甚至没有充分的理由使用 grep;下面的代码更高效(因为它只使用内置于 bash 中的功能,不需要调用外部命令)并且更具可读性:

if [[ $line = *"Oct/2015"* ]]; then
echo "Current line is: $line"
fi

如果您确实确实需要使用grep,请这样写:

if echo "$line" | grep -q "Oct/2015"; then
echo "Current line is: $line"
fi

这样 if 直接在管道的退出状态上运行,而不是运行第二个命令测试 $? 并在 that 命令的退出上运行状态。

关于linux - 为什么我在数字比较时收到命令未找到错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33175141/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com