我有个问题。我有一个脚本,一种用 bash 编写的长脚本,大约 370 行。它有几个函数,在这些函数中,用户必须输入信息,然后将其存储在文件中。(这应该代表一个 MySQL 数据库,具有 INSERT、UPDATE、SELECT、SELECT 函数,其中 x=y。)我自己在 bash 中创建了这个,现在唯一让我放心的是,我需要能够在命令行上将参数传递给脚本,它将执行与脚本相同的操作。我知道 bash 有位置参数,例如
$1
$2
$3
$*
$@
$0 ( refers to the name of the script)
等等。我知道如何在简单的 if 函数中使用这些参数。这对于我的脚本来说还不够。我基本上需要执行与脚本相同的操作,但要从命令行执行。我已经为此苦苦挣扎了几天,但我想不出让它工作的方法。也许有人可以帮我解决这个问题?
如果您想要脚本。这是可能的,但我认为我不能将其粘贴在这里...
编辑:脚本链接,http://pastebin.com/Hd5VsDv2
请注意,我是 Bash 脚本的初学者。
编辑:这是对答案 1 的回复。正如我所说,我希望我可以将 SELECT 替换if [ "$1" = "one" ] ; then echo "found one"
为if [ "$1" = "one" ] ; then echo SELECT
我之前在脚本中使用的函数(上面)
答案1
该脚本是交互式的,并通过多个语句读取其数据read
。
快速浏览后,我的判断是编写新脚本比调整当前脚本以接受命令行更容易。(如果自由使用剪切/粘贴,应该不会那么难)。
以下是一些帮助您入门的提示。
- 编写一个简单的脚本,从命令行读取三个或四个变量,将变量保存在局部变量中
A B C D
,然后echo
再次将它们保存出来。 - 在您的脚本中创建一个函数
if A=one echos "found one" if A=two echos "found two" if A=three echos "found two"
(此案例效果很好) - 创建另一个 few 函数,其功能与上面的 no2 相同,但针对
B
、C
&D
- 将 no2 中的 echo 语句替换为你新创建的函数
- 如果您让它工作,您现在就可以开始用当前脚本中的真实内容替换占位符函数和值。
最后,不要一下子采取太多步骤,遇到困难时可以询问https://stackoverflow.com/。请务必包括最低限度可以运行的代码量并重现错误。
祝你好运
答案2
在 bash 中,有内置getopts
函数来解析位置参数。您也可以使用较旧的外部命令getopt
。查看使用 getopts 读取传递给脚本的选项/参数