【问题标题】:Use command line to enter parameters使用命令行输入参数
【发布时间】:2015-07-20 16:15:21
【问题描述】:

我正在尝试了解如何使用命令行在我的程序中输入不超过三个参数...
它当前要求用户说出他们的用户名、名称和密码——然后将名称、密码和创建日期/时间放入日志文件中,用户名作为 doc 文件——如下所示

function savefile {
# Save to file
  if [ -e "$username".log ]; then
    echo "Username already exists, returning you to the menu."
    sleep 2
    clear
      menu
  else
    echo "$fullname" >> "$username".log
    echo "$password" >> "$username".log
      curdate=$(date +'%d/%m/%Y %H:%M:%S')
    echo "$curdate" >> "$username".log
  echo "Creating your account"
    sleep 2
    clear
  echo "Account created"
  echo
    afterBasic
  fi 
}  

想知道你们是否知道如何从命令行执行此操作?我知道我必须使用

sh 1 2 3

但仅此而已……

这是用 Batch 编写的相同内容,如果这也有帮助的话......

set OP_username=%1
set OP_fullname=%2
set OP_password=%3
    if [%3]==[%9] goto 1
echo %OP_fullname% >> %OP_username%.log
echo %OP_password% >> %OP_username%.log
echo %date% %time% >> %OP_username%.log

【问题讨论】:

    标签: linux bash batch-file command-line


    【解决方案1】:

    要访问命令行参数,请使用$ 符号。因此,要访问您编写的第一个命令行变量 $1 等等。因此,将变量 OP_username 设置为等于第一个参数,您可以编写 OP_username=$1

    使用您在命令行中编写的saveFile 1 2 3 的参数运行您的程序。 saveFile 是一个函数,而不是 bash 脚本。如果您想将其作为 bash 脚本运行,请将其保存在 .sh 文件中。运行.sh 文件将定义您可以随后调用的函数,如上所示。另一种选择是不使用函数,而是在.sh 文件中定义您的代码,假设称为saveFile.sh。然后你可以运行sh saveFile.sh 1 2 3。所以你的代码是:

    saveFile.sh/function

    # Save to file
    username=$1
    fullname=$2
    password=$3
    if [ -e "$username".log ]; then
      echo "Username already exists, returning you to the menu."
      sleep 2
      clear
      menu
    else
      echo "$fullname" >> "$username".log
      echo "$password" >> "$username".log
      curdate=$(date +'%d/%m/%Y %H:%M:%S')
      echo "$curdate" >> "$username".log
      echo "Creating your account"
      sleep 2
      clear
      echo "Account created"
      echo
      afterBasic
    fi 
    

    【讨论】:

    • 感谢您的帮助。不幸的是,程序必须从一个脚本运行,我该怎么做?
    • 我不确定我是否理解。这段代码可以写在一个独立的 sh 文件中,也可以写成一个更大的脚本中的函数。
    • 好吧,当我正常运行代码时,它告诉我一个帐户已经存在,无论我输入什么数据
    • 如果您的脚本中有其他问题,您应该在单独的问题中提出。您是否设法使输入参数起作用?
    • 如果我将它们放在文档的顶部并带有文件编写代码,是的。但是当嵌套在函数中时,命令行和实际程序都不起作用:/
    【解决方案2】:

    命令行参数为(ba)sh脚本中的$1$2$3等。

    所以你可以使用

    #!/bin/bash
    OP_username=$1
    OP_fullname=$2
    OP_password=$3
    # ...
    

    【讨论】:

      猜你喜欢
      • 2014-02-19
      • 2016-02-24
      • 2022-01-26
      • 2019-03-04
      • 1970-01-01
      • 1970-01-01
      • 2014-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多