【问题标题】:Create bash script that takes input创建接受输入的 bash 脚本
【发布时间】:2012-12-02 21:14:35
【问题描述】:

我想创建一个类似于mongonoderedis-climysql 等编程解释器的 bash 脚本。

我希望能够使用像 test 这样的命令,它的行为类似于上面的示例。

thomas@workstation:~$ test
> 

如何创建一个这样的命令?这叫什么?

我希望能够获取内容并将其转换为变量。

thomas@workstation:~$ test
> hello world
hello world 
thomas@workstation:~$

一旦我希望能够处理代码中的字符串“hello world”,我只想在按下回车后获取一个“条目”,例如回显它。

这叫什么?如何使用 BASH 制作一个?

【问题讨论】:

  • 为什么不直接将您想要的命令实现为脚本(或单个脚本中的 shell 函数)? Bash 已经是一个非常强大的环境,并且在作为 shell 方面做得很好。

标签: linux bash unix command-line terminal


【解决方案1】:

我认为“阅读”是您正在寻找的,不是吗?

这里是一些示例的链接:http://bash.cyberciti.biz/guide/Getting_User_Input_Via_Keyboard

所以你可以做这样的事情:

read -p "Enter your name : " name
echo "Hi, $name. Let us be friends!"

【讨论】:

  • 我知道命令可以接受标志和参数我想了解替代方法的工作原理。
【解决方案2】:

很抱歉,这没有直接回答您,但考虑使用功能更全面的编程语言(如 Python、Ruby 或 Perl)来完成此类任务可能是值得的。在 Python 中,您可以使用 raw_input() 函数。

user_command = raw_input('> ')

会产生你的提示。

【讨论】:

  • “提示”是一个很棒的词,谢谢。我看到 bash 也可能不够用。
【解决方案3】:

首先,不要将您的脚本命名为test。这会产生太多的混乱。无论你怎么称呼它,你都可以做很多事情:

#!/bin/sh
printf '> '
read line
echo "$line"

如果你的外壳支持它:

#!/bin/sh
read -p '> ' line
echo "$line"

#!/bin/sh
printf '> '
sed 1q    # This will print the input.  To store in in a variable: a=$( sed 1q )

【讨论】:

  • 我知道我会得到 flac 来命名该示例 test,感谢您的提交。完美。
【解决方案4】:
[spatel@tux ~]$ read a
Hello World!!!!!
[spatel@tux ~]$ echo $a
Hello World!!!!!

【讨论】:

    【解决方案5】:

    这里可能有用的关键字是REPL(读取-评估-打印循环),主要用于编程语言或编码环境。您的浏览器控制台是 REPL 的一个很好的例子。

    Node allows you use their REPL to build interactive apps.

    【讨论】:

      猜你喜欢
      • 2023-03-23
      • 2012-05-10
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      • 2022-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多