使用命令行输入参数

时间:2015-05-09 23:07:35

标签: linux bash batch-file command-line

我正在尝试找出如何使用命令行在我的程序中输入不超过三个参数...
它当前要求用户说出他们的用户名,名称和密码 - 然后将其名称,密码和创建日期/时间放入日志文件中,其用户名为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

2 个答案:

答案 0 :(得分:3)

要访问命令行参数,请使用$符号。因此,要访问第一个命令行变量,请编写$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 

答案 1 :(得分:0)

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

所以你可以使用

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