2015-05-09 178 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 
# ...