小编Red*_* Lv的帖子

如何将数组作为参数传递给Bash中的函数

我们知道,在bash编程中,传递参数的方式是$1...... , $N. 但是,我发现将数组作为参数传递给接收多个参数的函数并不容易.这是一个例子:

f(){
 x=($1)
 y=$2

 for i in "${x[@]}"
 do
  echo $i
 done
 ....
}

a=("jfaldsj jflajds" "LAST")
b=NOEFLDJF

f "${a[@]}" $b
f "${a[*]}" $b
Run Code Online (Sandbox Code Playgroud)

如上所述,函数f接收两个参数:第一个分配给x一个数组,第二个分配给y.

f可以通过两种方式调用.第一种方法使用"${a[@]}"第一个参数,结果是:

jfaldsj 
jflajds
Run Code Online (Sandbox Code Playgroud)

第二种方式使用"${a[*]}"第一个参数,结果是:

jfaldsj 
jflajds 
LAST
Run Code Online (Sandbox Code Playgroud)

结果都不如我所愿.那么,有没有人知道如何正确地在函数之间传递数组?

arrays bash shell

43
推荐指数
3
解决办法
7万
查看次数

shell级别的变量范围

最近我一直在阅读高级Bash脚本,我发现一些关于父壳和子壳之间的变量范围的东西让我非常困惑.这里是:

场景:有一些方法来生成一个子壳:第一,(command-lists); 第二,执行非内置命令或脚本,依此类推.

因为当我们在父脚本中运行脚本时,子脚本无法在父shell中看到变量.为什么(command-lists)在子结构中子shell可以看到父shell中的变量.例如

  1. (命令列表)

    $ a=100
    $ (echo $a)
    100
    $
    
    Run Code Online (Sandbox Code Playgroud)
  2. 运行一个脚本

    $ cat b.sh
    echo $a
    $ a=100
    $ ./b.sh
    # empty
    
    Run Code Online (Sandbox Code Playgroud)

怎么样?

linux bash shell

4
推荐指数
1
解决办法
432
查看次数

SBCL 在 Linux 中的安装

对于 Lisp 新手来说,如何在 linux 操作系统中安装 sbcl。

我发现只要使用命令 sh install.sh 错误信息是: src/runtime/sbcl not find, aborting Installation

lisp sbcl common-lisp

2
推荐指数
1
解决办法
1万
查看次数

标签 统计

bash ×2

shell ×2

arrays ×1

common-lisp ×1

linux ×1

lisp ×1

sbcl ×1