2012-08-03 56 views
-1

我有一个要求,当我想在传递给shell脚本的参数中查找特定的关键字。如果该关键字存在,我不想显示该值。在ksh脚本中使用字符串函数

下面我试过,但它不工作,也用awk尝试,但它看起来文件你input.Could请帮助:

#!/bin/ksh 

i=0 
for i in [email protected] 
do 
    echo $i 
    if index(toupper($i),"PASSWORD") -gt 0 
    then 
     print "****" 
    fi 
done 

感谢

+0

我不知道为什么你会试图掩盖字符串在命令行上以明文形式指定。你应该考虑他们已经公开的知识。 – 2012-08-03 23:48:32

回答

1

此功能可以做你的要求。

将字符串转换为大写字符的简单方法是使用typeset -u来使用 。在这种情况下,我创建一个副本$u,所以我们还是 在$w

function shield_keyword { 
    typeset -u upper; 
    typeset w; 
    for w in "[email protected]"; 
    do 
     upper=$w; 
     [[ $upper == *PASSWORD* ]] && echo "****" || echo "$w" "$upper"; 
    done 
} 

测试原来的混合或小写值:

$ shield_keyword fee fie PASS WORD PASSWORD:secret special 
fee FEE 
fie FIE 
PASS PASS 
WORD WORD 
**** 
special SPECIAL 
+0

非常感谢Henk。这个对我有用。 – user1574878 2012-08-06 13:49:11