2017-08-11 79 views
2

我正在寫bash腳本,其中它要求特定的目錄,並在執行腳本時進行。 然後它詢問我的人數並進入循環。我希望它能夠創建一個文本文件,其中包含目錄和輸入人員的姓名。執行多個用戶輸入bash

說到使用觸摸創建文件不起作用。

我錯過了什麼。

echo "Please enter directory\n"  
read -p directory  
mkdir -p $directory/name  

echo "Please enter number of persons\n"  
read -p number  

for ((i = 0; i <= number; i++))  

do  
    echo "Please enter person $i :\n"  
    read -p person  
    touch $directory$person.txt  

done 
+0

你能[編輯問題](https://stackoverflow.com/posts/45631651/edit)突出顯示實際問題是什麼?什麼不適合你? – arco444

+0

目前還不清楚你在問什麼。 – janos

+0

我編輯過,以突出問題。 – Mike

回答

0

您的腳本有幾個問題。

首先,您沒有正確讀取用戶輸入。 read命令的-p選項用於提供將用作提示的文本,而不用於指定輸出變量。輸出變量是作爲位置參數給出的。因此,例如,您可以在沒有文本提示的情況下將用戶輸入讀入變量directory(然後您可能需要以前的echo),如下所示:read directory;或者您可以打印提示並像這樣讀取:read -p "Directory: " directory。其次,你的循環迭代number+1次,從0number,包括number。你可能希望它從1number

最後,輸入文件的名稱touch ing不一定是$directory中的文件,但它可能是當前工作目錄中的文件。例如,如果用戶爲directoryname輸入somedirperson,那麼您將創建一個名爲somedirname.txt的文件。所以,最好在目錄名稱和文件名稱之間加上斜槓。

這些固定的,你的腳本是這樣的:

#!/bin/bash 

read -p "Please enter directory: " directory 
mkdir -p "$directory/name" 

read -p "Please enter number of persons: " number 

for ((i = 1; i <= number; i++)); do 
    read -p "Please enter person $i: " person 
    touch "$directory/name/$person.txt" 
done 

運行它,比如像這樣:

$ bash script 
Please enter directory: /tmp 
Please enter number of persons: 3 
Please enter person 1: Huey 
Please enter person 2: Dewey 
Please enter person 3: Louie 

將創建一個目錄/tmp/name,和文件吧:

$ find /tmp/name 
/tmp/name 
/tmp/name/Huey.txt 
/tmp/name/Dewey.txt 
/tmp/name/Louie.txt