#!/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
以上抓取用户的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 :(得分: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{}'
$
答案 1 :(得分:0)
这是sarnold答案的简化版本:
for x in $TTF; do rm /path/to/file/TT$x.*; done