【发布时间】:2014-01-25 03:40:00
【问题描述】:
#!/bin/bash
echo "Enter the search string"
read str
for i in `ls -ltr | grep $str > filter123.txt ; awk '{ print $9 }' filter123.txt` ; do
if [ $i != "username_list.txt" || $i != "user_list.txt" ] ; then
else
rm $i
fi
done
我是 unix shell 脚本的初学者,我使用 grep 方法根据给定的字符串创建上述文件以删除文件。当我执行上面的脚本文件时,它显示错误,如“./rm_file.txt: line 10: syntax error near unexpected token `else'”。请提出这个脚本中的错误。
【问题讨论】:
-
你为什么使用
grep和awk和一个临时文件?只需执行ls -ltr | awk "/$str/{print \$9}"(如果 str 包含某些字符,这将失败,但grep $str也是如此) -
使用
[[]](见mywiki.wooledge.org/BashPitfalls#A.5B_.24foo_.3D_.22bar.22_.5D)。也不知道你为什么要尝试if !a || !b then nothing else something,而不是逻辑上等效的if a && b then something。