我们知道,在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)
结果都不如我所愿.那么,有没有人知道如何正确地在函数之间传递数组?
最近我一直在阅读高级Bash脚本,我发现一些关于父壳和子壳之间的变量范围的东西让我非常困惑.这里是:
场景:有一些方法来生成一个子壳:第一,(command-lists); 第二,执行非内置命令或脚本,依此类推.
因为当我们在父脚本中运行脚本时,子脚本无法在父shell中看到变量.为什么(command-lists)在子结构中子shell可以看到父shell中的变量.例如
(命令列表)
$ a=100
$ (echo $a)
100
$
Run Code Online (Sandbox Code Playgroud)运行一个脚本
$ cat b.sh
echo $a
$ a=100
$ ./b.sh
# empty
Run Code Online (Sandbox Code Playgroud)怎么样?
对于 Lisp 新手来说,如何在 linux 操作系统中安装 sbcl。
我发现只要使用命令 sh install.sh 错误信息是: src/runtime/sbcl not find, aborting Installation