2012-02-02 43 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