2012-02-02 4 views
0
#!/bin/ksh 
grep -v "root" /MCS/usr/dbl/tsk/idle.txt | MESTAID=`awk ' {print $1}'` 
grep -e "$MESTAID" MCSTNM.SAV | TTF=`awk ' {print $2}'` 

для этого примера позволяет сказать $TTF = 123 555 666Использование AWK переменных для удаления файлов

Вышеуказанный хватает 3-значный уникальный TTF номер пользователя, который я тогда нужно удалить, используя следующий синтаксис: rm /path_to_file/TT123.*

Однако когда Я пытаюсь сделать это в скрипте: rm /path_to_file/TT$TTF.*

Он пытается выполнить следующую команду: rm /path_to_file/TT123 555 666.*

Есть ли способ, чтобы взять переменную $TTF и запустить его самостоятельно, а именно:

rm /path_to_file/TT123.* 
rm /path_to_file/TT555.* 
rm /path_to_file/TT666.* 

Я надеюсь, что мой вопрос ясен, я не программист, это точно. Просто парень пытается написать простой скрипт, чтобы уменьшить его ежедневный рабочий процесс :) Любая помощь будет оценена по достоинству.

+0

Я уверен, что мы можем решить эту проблему, но я не могу следовать вашей существующий код. Например, то, что MESTAID является или как оно связано, неясно. –

+0

@John: Если я начну читать на 'для этого примера ...' Я думаю, что понимаю, что спрашивает user1184129 ... – sarnold

ответ

1

Я хотел бы попробовать:

echo -n $TTF | xargs -n 1 -d ' ' -I '{}' rm '/path/to/file/TT{}.*' 

echo(1) с -n угнетает новую строку в конце.

xargs(1) с -n 1 будет выполнять одну команды в то время, -d ' ' просит космический разделитель, -I '{}' просит замену {} в начальном доводе командования со стандартными входными элементами.

Возможно, было бы целесообразно создать несколько небольших тестовых ящиков, прежде чем сбросить их на место; он работал на моем простом тесте, но ваш посложнее:

$ touch TT111 TT222 TT333 
$ echo -n $TTF | xargs -n 1 -d ' ' -I '{}' rm '/tmp/TT{}' 
$ 
0

Вот упрощенная версия ответа sarnold в:

for x in $TTF; do rm /path/to/file/TT$x.*; done 
+0

Большое вам спасибо! Вы, ребята, рок! – user1184129

Смежные вопросы