您的腳本有幾個問題。
首先,您沒有正確讀取用戶輸入。 read
命令的-p
選項用於提供將用作提示的文本,而不用於指定輸出變量。輸出變量是作爲位置參數給出的。因此,例如,您可以在沒有文本提示的情況下將用戶輸入讀入變量directory
(然後您可能需要以前的echo
),如下所示:read directory
;或者您可以打印提示並像這樣讀取:read -p "Directory: " directory
。其次,你的循環迭代number+1
次,從0
到number
,包括number
。你可能希望它從1
到number
。
最後,輸入文件的名稱touch
ing不一定是$directory
中的文件,但它可能是當前工作目錄中的文件。例如,如果用戶爲directory
和name
輸入somedir
爲person
,那麼您將創建一個名爲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
你能[編輯問題](https://stackoverflow.com/posts/45631651/edit)突出顯示實際問題是什麼?什麼不適合你? – arco444
目前還不清楚你在問什麼。 – janos
我編輯過,以突出問題。 – Mike