2014-03-27 34 views
1

我想寫一個腳本,將允許用戶輸入他們想要存儲文件的目錄的路徑。我有一些看起來像這樣:使用變量作爲目錄路徑重定向輸出在bash

#! /bin/bash 
echo "Enter the directory path" 
read varpath 
varfile="Filename" 
echo "This is a file" > "$varpath$varfile" 

什麼,我要的是在用戶輸入所謂的「文件名」,並已行的目錄路徑的文件,「這是一個文件」不過,我得到一個錯誤說沒有這樣的文件或目錄。有人能告訴我什麼是錯的,或者是否有替代解決方案。

謝謝。

+0

嘗試' 「$ varpath/$ varfile」' – anubhava

+0

完全取決於什麼樣的用戶輸入。如果'varpath'是'a',那麼這段代碼就會在當前目錄下創建'aFilename',並且沒有錯誤(假設你有寫入權限並且磁盤沒有滿)等等。如果用戶輸入一個包含不存在的目錄的路徑,那麼是的,可以預料的是,會出現錯誤,因爲shell不會自發地創建這些目錄。 (但是你的代碼可以,而且它不會更復雜。)提示:'mkdir -p $(dirname「$ varpath」)'如果'varpath'本身不是一個目錄。) – tripleee

回答

4

可能需要一個/

echo "This is a file" > "${varpath}/${varfile}" 

您也可以echo的變量,以確保它們是你可能要處理正確

+0

嗨,我試過了你說...並且它仍然給我同樣的錯誤,我甚至試圖回顯路徑名稱,並從它的外觀,它是一個正確的名稱。 – user3351901

+0

@ user3351901:確保路徑正確。嘗試腳本中的'ls $ {varpath}/$ {varfile}',看它是否打印所需的文件。 – Amit

+0

Yeup。感謝我得到它! – user3351901

0

幾件事情:

  1. 用戶輸入目錄中有所需的文件夾,如果不能創造他們使用mkdir -p命令。

  2. 用戶輸入以/結束或不結束的目錄路徑。如果沒有,你可能想自己添加它。