Bash:awk输出到数组

时间:2015-09-12 20:49:52

标签: arrays linux bash shell awk

我试图将awk命令的内容放入bash数组中,但是我有点麻烦。

>>test.sh
f_checkuser() {
    _l="/etc/login.defs"
    _p="/etc/passwd"
    ## get mini UID limit ##
    l=$(grep "^UID_MIN" $_l)
    ## get max UID limit ##
    l1=$(grep "^UID_MAX" $_l)
    awk -F':' -v "min=${l##UID_MIN}" -v "max=${l1##UID_MAX}" '{ if ( $3 >= min && $3 <= max  && $7 != "/sbin/nologin" ) print $0 }' "$_p"
}
...

使用过的文件:

示例文件:/etc/login.defs

>>/etc/login.defs
### Min/max values for automatic uid selection in useradd
UID_MIN          1000
UID_MAX         60000

示例文件:/ etc / passwd

>>/etc/passwd
root:x:0:0:root:/root:/usr/bin/zsh
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
admin:x:1000:1000:Administrator,,,:/home/admin:/bin/bash
daniel:x:1001:1001:Daniel,,,:/home/daniel:/bin/bash

输出如下:

admin:x:1000:1000:Administrator,,,:/home/admin:/bin/bash
daniel:x:1001:1001:User,,,:/home/user:/bin/bash

分别(awk ... print $ 1}'“$ _p”)

admin
daniel

现在我的问题是在数组中保存awk输出以将其用作变量。

>>test.sh
...
f_checkuser

echo "Array items and indexes:"
for index in ${!LOKAL_USERS[*]}
do
    printf "%4d: %s\n" $index ${array[$index]}
done

它可能/应该看起来像这个例子。

Array items and indexes:
   0: admin
   1: daniel

特别是我将成为系统的所有用户(不是root,bin,sys,ssh,...)而没有数组中的阻塞用户。 也许有人有另一个想法来解决我的问题?

3 个答案:

答案 0 :(得分:1)

您是否尝试将一个脚本的输出设置为数组?有bash有办法做到这一点。例如,

a=( $(seq 1 10) ); echo ${a[1]}

将使用元素1到10填充数组a并将打印2,由seq生成的第二行(数组索引从零开始)。只需用您的脚本替换$(...)的内容即可。

答案 1 :(得分:0)

对于那些来年以后的人...

bash 4正是为此目的引入了readarray(又名mapfile)。

另请参阅Bash capturing output of awk into array

答案 2 :(得分:-2)

有效的

一个解决方案

Array items and indexes:
   0: daniel
   1: admin

输出:

    var reader = new FileReader();
    var image  = new Image();
    reader.readAsDataURL(input.files[0]);
    reader.onload = function (e) {
        image.src    = e.target.result; 
        var valid = false;
        valid = image.onload = function() {
            if (thi.width > 200) {
                valid = true;
            }
        return valid;
    }();

    }
    - here i would like to return "valid" 

但我更喜欢观察没有新的临时文件。 那么,如果没有临时文件,还有其他想法吗?