覆盖文件然后追加

时间:2013-09-25 21:45:07

标签: shell loops

我的脚本中有一个循环,它会将一个电子邮件地址列表附加到文件“$ CRN”。如果再次执行此脚本,它将附加到此旧列表。我希望它用新列表覆盖,而不是附加到旧列表。如果需要,我可以提交我的整个脚本。我知道我可以测试“$ CRN”是否存在然后删除文件,但我对其他一些建议感兴趣?感谢。

    for arg in "$@"; do
            if ls /students | grep -q "$arg"; then
                    echo "${arg}@mail.ccsf.edu">>$CRN
                    ((students++))
            elif    ls /users | grep -q "$arg$"; then
                    echo "${arg}@ccsf.edu">>$CRN
                    ((faculty++))
    fi

1 个答案:

答案 0 :(得分:2)

最好这样做:

CRN="/path/to/file"
:> "$CRN"

for arg; do
        if printf '%s\n' /students/* | grep -q "$arg"; then
                echo "${arg}@mail.ccsf.edu" >> "$CRN"
                ((students++))
        elif printf '%s\n'/users/* | grep -q "${arg}$"; then
                echo "${arg}@ccsf.edu" >> "$CRN"
                ((faculty++))
        fi
done