我正在调用一些将VARIABLE
设置为某个值并返回另一个值的函数。我需要保留VARIABLE
的值,并将函数的返回值分配给另一个VAR
。这是我试过的:
bar() {
VAR="$(foo)"
echo $VARIABLE >&2
echo $VAR >&2
}
foo() {
VARIABLE="test"
echo "retval"
}
bar
但它打印
retval
有没有办法做到这一点?
最佳答案
ksh
为此提供了一个方便的非子命令替换构造:
#!/bin/ksh
foo() {
echo "cat"
variable="dog"
}
output="${ foo }"
echo "Output is $output and the variable is $variable"
在
bash
和其他shell中,您必须通过一个临时文件来代替:#!/bin/bash
foo() {
echo "cat"
variable="dog"
}
# Create a temp file and register it for autodeletion
file="$(mktemp)"
trap 'rm "$file"' EXIT
# Redirect to it and read it back
foo > "$file"
output="$(< "$file")
echo "Output is $output and the variable is $variable"
关于linux - 保留返回值并且不从子shell运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50427597/