Bash 我怎样才能修复正在阅读的行?

Bash 我怎样才能修复正在阅读的行?,bash,Bash,我在一个名字列表中有多行注释掉了。 我正试着阅读和编号的确切行,他们只被注释了。 输出中的当前行如下所示 第2行:jimmy注释掉了& 第三行:汤米评论说。汤米在四号线而不是三号线。 我很确定我很接近或者希望如此。我只是被卡住了,希望有人能帮助初学者 废话文件: jim #jimmy tom #tommy 脚本文件: #!/bin/sh n=1 input='blah' while IFS= read -r Line; do Domain=$(echo "$Line" | grep

我在一个名字列表中有多行注释掉了。 我正试着阅读和编号的确切行,他们只被注释了。 输出中的当前行如下所示

第2行:jimmy注释掉了&
第三行:汤米评论说。汤米在四号线而不是三号线。
我很确定我很接近或者希望如此。我只是被卡住了,希望有人能帮助初学者

废话文件:

jim
#jimmy
tom
#tommy
脚本文件:

#!/bin/sh

n=1
input='blah'
while IFS= read -r Line; do
    Domain=$(echo "$Line" | grep -v "^[[:space:]*\#]")
    if [ -z "$Domain" ]; then
        echo "Line $n: $Line commented out"
        continue;
    fi
    n=$((n+1))
done < $input

代码的主要问题是
continue
语句跳过行号,直接进入循环的末尾

以下是您的代码的固定版本:

#/副秘书长/垃圾箱/环境卫生
n=1
输入class='blah'
而IFS=读取-r行;做
Domain=“${Line%%#*}”
如果[-z“$Domain”];然后
echo“行$n:$Line注释掉”
其他的
:#使用域做一些事情
fi
n=$((n+1))

完成代码的主要问题是
continue
语句跳过行号,直接进入循环的末尾

以下是您的代码的固定版本:

#/副秘书长/垃圾箱/环境卫生
n=1
输入class='blah'
而IFS=读-r行;做
Domain=“${Line%%#*}”
如果[-z“$Domain”];然后
echo“行$n:$Line注释掉”
其他的
:#使用域做一些事情
fi
n=$((n+1))

完成只需从0开始
n
,然后将计数器移到条件
继续
上方

#!/bin/bash

n=0
input='blah'
while IFS= read -r Line; do
    n=$((n+1))
    Domain=$(echo "$Line" | grep -v "^[[:space:]*\#]")
    if [ -z "$Domain" ]; then
        echo "Line $n: $Line commented out"
        continue;
    fi
done < $input
也就是说,你可以更简洁地做类似的事情:

$ grep -n '^#' blah
2:#jimmy
4:#tommy

只需从0开始
n
,然后将计数器移到条件
继续
上方即可

#!/bin/bash

n=0
input='blah'
while IFS= read -r Line; do
    n=$((n+1))
    Domain=$(echo "$Line" | grep -v "^[[:space:]*\#]")
    if [ -z "$Domain" ]; then
        echo "Line $n: $Line commented out"
        continue;
    fi
done < $input
也就是说,你可以更简洁地做类似的事情:

$ grep -n '^#' blah
2:#jimmy
4:#tommy

你能正确缩进你的代码吗?让它更容易阅读和理解?我不熟悉编码和尝试。对不起,谢谢。我正在重试。你能正确缩进你的代码吗?让它更容易阅读和理解?我不熟悉编码和尝试。对不起,谢谢。我在重试。