zoukankan      html  css  js  c++  java
  • linux-如何在bash -c命令中插入变量

    “ bash”命令启动一个子进程,其父进程是您当前的bash会话.

    要在父进程中定义变量并在子进程中使用它,必须将其导出.

    先看一个简单例子:
    $FOO="text"
    $echo $FOO
    $text

    $FOO="text"
    $bash -c 'echo $FOO'
    $# return nothing


    $export FOO="text"
    $bash -c 'echo $FOO'

    要点:
    1、 Subshells will have access to all variables from the parent, regardless of their exported state.
    2、 Subprocesses will only see the exported variables.
    What is common in these two constructs is that neither can pass variables back to the parent shell.
    看下面的例子。
    $ noexport=noexport; export export=export; (echo subshell: $noexport $export; subshell=subshell); bash -c 'echo subprocess: $noexport $export; subprocess=subprocess'; echo parent: $subshell $subprocess
    subshell: noexport export
    subprocess: export
    parent:
    $ noexport=noexport; export export=export; exec bash -c 'echo execd process: $noexport $export; execd=execd'; echo parent: $execd
    execd process: export

    上面解释的很清楚了,再来看下面的一个例子和解释:
    如果我们创建一个普通变量和一个数组变量,
    a=apple # a simple variable
    arr=(apple) # an indexed array with a single element

    and then echo the expression in the second column, we would get the result / behavior shown in the third column. The fourth column explains the behavior.

    | Expression | Result(echo) | Comments

    ---+-------------+-------------+--------------------------------------------------------------------
    1 | "$a" | apple | variables are expanded inside ""
    2 | '$a' | $a | variables are not expanded inside ''
    3 | "'$a'" | 'apple' | '' has no special meaning inside ""
    4 | '"$a"' | "$a" | "" is treated literally inside ''
    5 | ''' | invalid | can not escape a ' within ''; use "'" or $''' (ANSI-C quoting)
    6 | "red$arocks"| red | $arocks does not expand $a; use ${a}rocks to preserve $a
    7 | "redapple$" | redapple$ | $ followed by no variable name evaluates to $
    8 | '"' | " | has no special meaning inside ''
    9 | "'" | ' | ' is interpreted inside "" but has no significance for '
    10 | """ | " | " is interpreted inside ""
    11 | "*" | * | glob does not work inside "" or ''
    12 | " " | | and have no special meaning inside "" or ''; use ANSI-C quoting
    13 | "echo hi" | hi | and $() are evaluated inside "" 14 | '`echo hi`' | `echo hi` | and $() are not evaluated inside ''
    15 | '${arr[0]}' | ${arr[0]} | array access not possible inside ''
    16 | "${arr[0]}" | apple | array access works inside ""
    17 | $'$a'' | $a' | single quotes can be escaped inside ANSI-C quoting
    18 | "$' '" | $' ' | ANSI-C quoting is not interpreted inside ""
    19 | '!cmd' | !cmd | history expansion character '!' is ignored inside ''
    20 | "!cmd" | cmd args | expands to the most recent command matching "cmd"
    21 | $'!cmd' | !cmd | history expansion character '!' is ignored inside ANSI-C quotes
    ---+-------------+-------------+--------------------------------------------------------------------

  • 相关阅读:
    Tips_of_JS 之 利用JS实现水仙花数的寻找与实现斐波那契数列
    我的天!居然可以这么“弹”!—— 弹性盒布局属性详述
    震惊,正儿八经的网页居然在手机上这样显示!
    这是假的JS——利用CSS Animation实现banner图非交互循环播放
    小K的H5之旅-HTML5与CSS3部分新属性浅见
    CSS小技巧-煎蛋的画法~
    小K的H5之旅-实战篇(一)
    SSM+Redis简介
    Hadoop HA(高可用搭建)
    hadoop完全分布式搭建(非高可用)
  • 原文地址:https://www.cnblogs.com/taowang2016/p/12794073.html
Copyright © 2011-2022 走看看