2016-03-03 66 views
0

从命令行回车:AWK添加在脚本中使用时与命令行

$cat file.txt 

OLAPSYS:3FB8EF9DB538647C:LOCKED OR EXPIRED 

上file.txt的运行AWK:

awk '{sub(/[ ]+/," ")}1' file.txt 

预期结果:OLAPSYS:3FB8EF9DB538647C:LOCKED OR EXPIRED

From My Script: $ ca牛逼script.sh

active_db_users="OLAPSYS:3FB8EF9DB538647C:LOCKED OR EXPIRED" 

for i in $active_db_users 

do 

    acct_status=$(echo $i | awk '{sub(/[ ]+/," ")}1') 
    echo $acct_status 
done 

运行脚本:

./script.sh > output 

cat output 

OLAPSYS:3FB8EF9DB538647C:LOCKED 

OR 

EXPIRED 

意想不到的结果有回车。如何修改脚本,所以结果是没有回车一行:

OLAPSYS:3FB8EF9DB538647C:锁定或过期

+0

您期待多少次迭代循环? –

回答

0

引用你的shell变量正确:

active_db_users="OLAPSYS:3FB8EF9DB538647C:LOCKED OR EXPIRED" 

for i in "$active_db_users" 
do 
    acct_status="$(echo "$i" | awk '{sub(/[ ]+/," ")}1')" 
    echo "$acct_status" 
done 

然后运行剧本再次让我们知道如果你仍然有问题。

请参阅https://unix.stackexchange.com/a/171347/133219如果你不知道为什么你应该总是引用你的变量,除非你有一个特定的目的,留下他们没有引用和完全理解所有的影响。

也读https://unix.stackexchange.com/questions/169716/why-is-using-a-shell-loop-to-process-text-considered-bad-practice - 无论你想要做上述脚本,似乎是错误的方法。