gpt4 book ai didi

linux - Bash 在包含 'read' 的字符串中执行命令,读取无法从标准输入读取输入

转载 作者:太空狗 更新时间:2023-10-29 11:49:28 26 4
gpt4 key购买 nike

我写了一个名为 test.sh 的 shell 脚本:

#!/bin/bash
read MY_NAME
echo $MY_NAME

当我按文件执行时,比如:

./test.sh

一切正常,但如果我按字符串执行,例如:

cat ./test.sh | sh

没有任何输出。当我使用字符串执行命令时,读取命令不起作用。我该如何修复它?

那么,如果我想用字符串执行脚本并从标准输入中读取一些值,该如何工作?

最佳答案

当你通过在管道中运行的 shell 执行脚本时,shell 的标准输入连接到管道,所以 read 从管道读取,但是什么都没有,因为一切都已经完成了由 shell 读取(或者更糟的是,如果脚本足够长,read 可能会在 shell 读取之前吃掉它的一部分)。

顺便说一句,不要用 sh 运行 bash 脚本,在许多系统上,shbash 是'相同。

关于linux - Bash 在包含 'read' 的字符串中执行命令,读取无法从标准输入读取输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45998478/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com