#!/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
Я начинающий scixping оболочки unix, создаю файл выше для удаления файла на основе данной строки, используя метод grep. в то время как я выполняю над файлом сценария, он показывает ошибку, например: ./rm_file.txt: строка 10: синтаксическая ошибка около неожиданного токена `else '. пожалуйста, укажите, что является ошибкой в этом скрипте.Unix, если ошибка состояния внутри для цикла
Почему вы используете 'grep' и' awk' и временный файл? Просто сделайте 'ls -ltr | awk "/ $ str/{print \ $ 9}" (Это не удастся, если str содержит определенные символы, но также делает 'grep $ str') –
Используйте' [[]] '(см. http: //mywiki.wooledge. орг/BashPitfalls # A.5B_.24foo_.3D_.22bar.22_.5D). Также не знаете, почему вы пытаетесь «if! A || ! b, а затем ничего другого, кроме логически эквивалентного 'if a && b then something'. – BroSlow