2016-03-03 64 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 - 無論你想要做上述腳本,似乎是錯誤的方法。