我有这样指定一个Shell变量AWK
/home/rm/home-scripts/originals/audicerttest/incoming/TEST040511.txt
/home/rm/home-scripts/originals/audicerttest2/incoming/TEST040512.txt
/home/rm/home-scripts/originals/audicerttest3/incoming/TEST040513.txt
etc..I字符串要提取字符串“audicerttest /来电”,audicerttest2 /入”等成shell变量后来在使用它脚本。我尝试过这样的事情。
for file in `find ${ROOT}/* -type f | grep -v -f test.txt`
do
let count++
echo ${count}: ${file}
echo ${file} | eval $(awk '{split($0,a,"/"); print "abc=a[6]/a[7]"}' < /dev/null)
echo abc====$abc
done
但它没有给出abc的输出。
你方法的主要问题是无用的'eval'。 'eval'是邪恶的!不提无用的subhells使用。 –
我刚刚更新了我的答案......他正在使用效率低下的工具来完成任务,但是(我希望)他问的是为什么它不起作用,而不仅仅是要求其他解决方案。所以,不知道为什么downvote。 –
我是Shell的总新手。我同意有太多的错误。感谢您纠正这些问题。 – Ravi