2012-02-02 85 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是什么或它如何相关尚不清楚。 – 2012-02-02 02:58:50

+0

@John:如果我开始阅读'这个例子......'我想我明白user1184129在问什么... – sarnold 2012-02-02 03:03:22

回答

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 2012-02-02 21:38:50