2016-07-12 50 views
0

是否有任何簡單易行的方法將多行腳本轉換爲一行以便在eval命令中解析?將多行bash轉換爲單行

getent group | cut -f3 -d":" | sort -n | uniq -c |\ 
while read x ; do 
    [ -z "${x}" ] && break 
    set - $x  ; if [ $1 -gt 1 ]; then 
     grps=`getent group | nawk -F: '($3 == n) { print $1 }' n=$2 | xargs`  ;  echo "Duplicate GID ($2): ${grps}" ;  fi  done 
+2

通常情況下,最好是避免'eval'。 (有些人認爲['eval'是'邪惡'的拼寫錯誤]](http://mywiki.wooledge.org/BashFAQ/048))。你想做什麼使得'eval'好像是一個很好的解決方案? – John1024

+0

@john嗯,這行包含在我的一個txt文件中,我使用'read line'來獲得這個命令,然後通過eval解析它以獲得命令的結果。 – Ctc

回答

0
one_line=`cat your_script_file | sed ":a s/[\]$//; N; s/[\]$//; s/\n/ /; t a ;"` 
echo $one_line