我是一个简单的Bash脚本。
#!/bin/bash
function askExp
(
read -ep "$1" -n "$2" -r "$3"
)
askExp "PHP? [Y/n]: " 1 php
echo $php
如何修改上面的脚本才能工作?在echo $php
之后我没有得到任何结果。我需要使用bash函数,因为之后我会在函数内添加正则表达式验证。该函数将在脚本中多次使用。
答案 0 :(得分:2)
shell运行子shell中(..)
下的任何内容,特别是一旦shell终止,定义的变量将失去其范围。您需要将函数括在{..}
中,其中包含bash
shell中的复合语句,以确保其中的命令在相同的 shell中运行。
function askExp { read -ep "$1" -n "$2" -r "$3"; }
作为一个小实验,您可以观察
的输出hw()(
echo hello world from $BASHPID
)
hw
echo $BASHPID
从同一个shell运行时。
hw(){
echo hello world from $BASHPID
}
hw
echo $BASHPID
原因是在前一种情况下,在(..)
内创建的shell中设置的变量在本地shell中丢失。