2012-01-24 93 views
-3

我需要一種方法將文件的名稱保存到變量中,以便在刪除該文件後,我可以創建一個與原始文件同名的新文件。我怎樣才能做到這一點?將文件名保存爲變量

比如,我參加一個文件,並將其存儲爲VAR1和使用

file=$var1 
file=$var2 

在我的代碼後,另一爲VAR2,我需要刪除VAR2和創建一個鏈接具有相同的名稱爲VAR1原來的var2。命令:

rm var2 
ln var1 var2 

創建錯誤消息 我想我需要創建一個保存文件VAR2的只是名稱的臨時變量,但我不知道該怎麼做。有任何想法嗎?謝謝!

+9

這個問題(和你的另外兩個近期的)清楚地表明,你真的需要得到一個shell腳本的書,而不是嘗試玩「猜語法」或「當這個失敗時問這個問題。「恕我直言,通過給你答案進一步幫助你真的會對你不利。 – SiegeX

回答

2

我想你只需要一個 「$」 符號:

# Set a variable 
myvar=moose 

# Get the contents of a variable 
echo $myvar # Prints "moose" 

你的情況:

var1=myfirstfile 
var2=mysecondfile 
rm $var2 
ln $var1 $var2 
+0

這是行不通的,因爲如果我不用$聲明變量,那麼我無法處理我的代碼 – user1161080

+6

WTF中的文件?你*不能*用$來聲明變量。您必須將「var1」聲明爲「var1」。你*必須*使用「$」來推定變量。示例:'echo var1 = $ var1'的內容。這是對「bash」的一個很好的介紹。請看看它:tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html – paulsm4

0

您正在使用哪個Shell?什麼OS?

與Linux和BASH這將是:

#!/bin/bash 

# Set variable $var1, it will contain a string - 'file': 
var1='file' 

# Set variable $var2, it will contain a string - 'another_file': 
var2='another_file' 

# Run 'rm' command with an argument - a variable $var1 
# So it's like running a command "rm file" 
rm $var1 

# Run 'ln' command with $var1 and $var2 as arguments 
# So it's like running a command "ln file another_file" 
ln $var1 $var2 

但在Mac OS X ln有不同的語法,你必須切換參數在ln

ln $var2 $var1 

編輯:此外,你的問題可能是你使用文件路徑中有空格,所以bash顯示"no such file or directory"錯誤。 由於rm的語法,找不到該文件。例如:

var1='long named file' 
rm $var1 

該腳本並運行一個命令"rm long named file",這反過來,刪除三個文件 - longnamedfile。 然後,會做的事情你:

rm "$var1" 
ln "$var1" "$var2" 
+0

我使用bash。如果我像'file'一樣聲明變量,那麼我無法在我的代碼中處理該文件。 – user1161080

+0

@ user1161080請您詳細說明一下嗎?處理的確切問題是什麼?運行腳本時有任何警告/錯誤? –

+0

@ user1161080我編輯了答案。總之,嘗試使用'rm「$ var1」'和'ln「$ var1」「$ var2」'代替。 –