2015-05-09 137 views
0

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

但仅此而已......

这是写在批处理,如果这也有助于同样的事情...

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 

回答

3

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

在命令行上使用您编写的参数运行程序saveFile 1 2 3saveFile是一个函数而不是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 
+0

感谢您的帮助。不幸的是,该程序必须从一个脚本运行,我该怎么做? – Badja

+0

我不确定我是否理解。这段代码可以写在一个独立的sh文件中,或者作为一个更大的脚本中的函数。 –

+0

嗯,当我正常运行代码时,它告诉我一个帐户已经存在,不管我输入什么数据 – Badja

0

命令行参数$1$2$3,等在(BA)sh脚本。

所以,你可以使用

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