有没有一种更干净的方法来链接这个 grep 管道,而不需要所有反斜杠,并且仍然避免长行?

Ric*_*son 0 bash awk grep adb

我的问题是它很丑。

#!/bin/bash

packages=$(\
adb shell ps | \
grep -v root | \
grep -v system | \
grep -v "android.process." | \
grep -v radio | \
grep -v "com.google.process." | \
grep -v "com.lge." | \
grep -v shell | \
grep -v NAME | \
awk '{print $NF}' | \
tr '\r' ' ' )

function nuke(){
    echo "Killing $p"
    adb shell am force-stop  "$1" &
    adb shell am stopservice "$1" &
    adb shell am kill        "$1" &
    adb shell pkill          "$1" &
    adb shell killall -9     "$1" &
}

function nuke-all(){
    for p in $packages; do
        nuke "$p" 
    done
}

nuke-all
Run Code Online (Sandbox Code Playgroud)

Rav*_*h13 5

OP的命令也可以在单个命令中完成,您可以尝试以下操作吗,它是单个awk命令(未测试,因为没有给出示例,并且也直接转换了OP的多个grep命令)。

adb shell ps | 
awk '
!/root|system|android\.process\.|radio|com\.google\.process\.|com\.lge\.|shell|NAME/{
    gsub(/\r/,OFS)
    print $NF
}'
Run Code Online (Sandbox Code Playgroud)