相关疑难解决方法(0)

883
推荐指数
10
解决办法
36万
查看次数

如何从另一个shell脚本调用shell脚本?

我有两个shell脚本,a.shb.sh.

如何b.sh从shell脚本中调用a.sh

bash shell

669
推荐指数
15
解决办法
90万
查看次数

Bash中的动态变量名称

我对bash脚本感到困惑.

我有以下代码:

function grep_search() {
    magic_way_to_define_magic_variable_$1=`ls | tail -1`
    echo $magic_variable_$1
}
Run Code Online (Sandbox Code Playgroud)

我希望能够创建一个包含命令的第一个参数并带有例如最后一行的值的变量名ls.

所以说明我想要的东西:

$ ls | tail -1
stack-overflow.txt

$ grep_search() open_box
stack-overflow.txt
Run Code Online (Sandbox Code Playgroud)

那么,我应该如何定义/声明$magic_way_to_define_magic_variable_$1以及如何在脚本中调用它?

我已经试过eval,${...},\$${...},但我仍然感到困惑.

variables syntax bash dynamic

135
推荐指数
8
解决办法
16万
查看次数

AWK - 使用getline将变量传输到system()?

我有一个理论问题:

1)如何将变量传递给getline()系统?

awk 'BEGIN{var="ls"; var | getline var; system("echo $var")}'
Run Code Online (Sandbox Code Playgroud)

2)如何为输出系统("ls")分配变量并在awk中打​​印结果?

awk 'BEGIN{var="system("ls")"; print '$var'}'
Run Code Online (Sandbox Code Playgroud)

3)你能在系统中分配一个变量(var ="ls")并在awk中打​​印结果吗?

awk 'BEGIN{system(var="ls"); print "'"$var"'"}'
Run Code Online (Sandbox Code Playgroud)

感谢您的信息.

编辑:

torek:谢谢你的回复.

我理解在第一个例子中,你可以这样做:

awk 'BEGIN { while ("ls -l" | getline var) system("echo " var  );}'
Run Code Online (Sandbox Code Playgroud)

对于此应用程序,您不能从system()分配变量输出?如下例所示:

awk 'BEGIN {var="ls -l"; system(var); print var}'
Run Code Online (Sandbox Code Playgroud)

awk getline

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

为什么这个 Bash 脚本没有继承所有的环境变量?

我正在尝试一些非常简单的事情:

PEOPLE=(
  "nick"
  "bob"
)
export PEOPLE="$(IFS=, ; echo "${PEOPLE[*]}")"
echo "$PEOPLE"  # prints 'nick,bob'
./process-people.sh
Run Code Online (Sandbox Code Playgroud)

出于某种原因,process-people.sh没有看到$PEOPLE. 就像,如果 I echo "$PEOPLE"from inside process-people.sh,它会打印一个空行。

据我了解,通过调用创建的子进程./process-people.sh应该继承父进程的所有环境变量,包括$PEOPLE. 然而,我在 Bash 3.2.57(1)-release 和 4.2.46(2)-release 上都试过这个,但它不起作用。

这里发生了什么?

bash

5
推荐指数
1
解决办法
3807
查看次数

bash:从单个变量传递多个参数

在 bash 调用中,我想将一些常量参数放入一个变量中,并且不要在管道内丢失 StdOut 和 StdErr。

我有电话

git fetch origin "ref1:ref1" "ref2:ref2" "ref3:ref3"
Run Code Online (Sandbox Code Playgroud)

让我们把这些常量值放到一个变量中

fetch_refspec="'ref1:ref1' 'ref2:ref2' 'ref3:ref3'"
Run Code Online (Sandbox Code Playgroud)

我看到了使用管道的解决方案,但我害怕以某种方式丢失输出。而且我不想使用文件进行缓存(tee命令)。

echo $refs | xargs git origin
Run Code Online (Sandbox Code Playgroud)

我不明白如何巧妙地做这件事。或者如果可能的话。
后来我想把输出放到一个变量中并分析它。

bash

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

标签 统计

bash ×5

shell ×2

awk ×1

dynamic ×1

getline ×1

linux ×1

syntax ×1

variables ×1