如何使用选项-s和内部读取输入创建shell脚本(/ bin / sh)

时间:2016-08-04 08:45:44

标签: shell pipe posix sh

我想像这样运行一个shell脚本(POSIX)。

#!/bin/sh
# this is a.sh
echo your age?
read age
echo "You are $age."

如果通过标准输入将其抛出到/ bin / sh

cat a.sh | /bin/sh -s

然后跳过这个问题。

我该怎么问这个问题?

2 个答案:

答案 0 :(得分:2)

问题是/bin/sh正在读取脚本,并且您的脚本正在读取输入,来自同一个输入文件:由cat a.sh提供的管道。

一种解决方案是修改您的脚本以从终端直接读取 ,而不是标准输入,尽管这可能不是您想要的。

echo "your age?"
read age < /dev/tty
echo "Your age $age"

更好的解决方案是不从标准输入读取脚本;只需将其作为参数传递给/bin/sh

/bin/sh a.sh

答案 1 :(得分:-1)

尝试-n选项

echo -n "your age?"
read age
echo "Your age $age"