2012-01-24 95 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”'代替。 –