zoukankan      html  css  js  c++  java
  • 理解shell的eval命令

    看以下两条命令:
    [zhangsan@XEN /sys]$ a="ls";b="$a";c="$b";"$c"
    Hey! No command '$a' found, did you mean 'ia'?

    [zhangsan@XEN /sys]$ a="ls";b="$a";c="$b";eval "$c"
    block bus class dev devices firmware fs kernel module power

    eval命令的作用是再次扫描解释,可多次叠加,如:
    [zhangsan@XEN /sys]$ a="ls";b="$a";c="$b";eval "$c"
    Hey! No command '$a' found, did you mean 'ia'?
    [zhangsan@XEN /sys]$ a="ls";b="$a";c="$b";eval eval "$c"
    block bus class dev devices firmware fs kernel module power

    附: 关闭文件描述符函数,并导出该函数给子进程使用
    close_all_fd()
    {
        # 0, 1, 2, 255
        # compgen -G "/proc/$BASHPID/fd/*
        for fd in $(ls /proc/$$/fd); do
            if test $fd -gt 2; then
                # 关闭文件描述符fd
                eval "exec $fd>&-"
            fi
        done
    }
    # 导出close_all_fd
    export -f close_all_fd
    实际应用,可参见:https://github.com/eyjian/libmooon/blob/master/shell/process_monitor.sh

  • 相关阅读:
    hdu 5101 Select
    hdu 5100 Chessboard
    cf B. I.O.U.
    cf C. Inna and Dima
    cf B. Inna and Nine
    cf C. Counting Kangaroos is Fun
    Radar Installation 贪心
    spfa模板
    Sequence
    棋盘问题
  • 原文地址:https://www.cnblogs.com/aquester/p/10155256.html
Copyright © 2011-2022 走看看