linux - 让 bash 脚本在另一个 bash 脚本中输出一个字符串
问题描述
我有一个在bash-one.sh
其中调用的 bash 脚本bash-two.sh
。我想bash-two.sh
在运行完成后导出一些字符串(该字符串取决于脚本内部发生的一些事情),以便bash-one.sh
运行它的脚本以后可以使用它
我试图拥有bash-two.sh
echo $BLAH
,但这不起作用。我也尝试过export $BLAH
没有运气...
解决方案
还有另一种方法可以完成此任务。
在您的 bash2 脚本中,您可以应用如下输出重定向:
exec 3>&1 1>/dev/tty
当放置在脚本的开头时,此命令将保存 stdout 在文件描述符 3 中的位置,并将强制在屏幕上打印 stdout (fd 1)。
然后,您可以从 script2 回显您想要 fd3 的变量,如下所示:
echo "$BLAH" >&3
通过这种方式,您可以使用从 script1 捕获 script2 的输出
testvar="$(bash-two.sh)"
测试:
cat sc1.sh
exec 3>&1 1>/dev/tty
echo "hello from sc1" #By default will be printed to >&1, redirected to /dev/tty=screen
sc1var="this comes from sc1"
echo "$sc1var" >&3
localvar=$(bash sc1.sh)
hello from sc1 #forced to be printed on /dev/tty
echo "$localvar"
this comes from sc1
推荐阅读
- c# - 如何在我的 for 循环中为文本框添加 css 类
- php - Json文件替换数据而不是添加
- php - 如何验证 Google Recaptcha V3 响应?
- go - 去自动完成在 Atom 编辑器中不起作用
- sql-server - 下面的存储过程有什么问题?
- android - 延迟捕获图像 - React Native Camera / Expo Camera
- django - django model.objects.filter(mydate__month=date.today().month) 不工作
- python - 在 `tf.estimator` 中,如何在训练结束时(不是在每次迭代中)`tf.assign` 一个变量?
- php - 首屏内容
- laravel - V8Js::compileString():14026: ReferenceError: window is not defined