将文件名保存为变量

时间:2012-01-24 01:44:08

标签: bash shell

我需要一种方法将文件名保存到变量中,这样在删除该文件后,我可以创建一个与原始文件同名的新文件。我怎样才能做到这一点?

例如,我接受一个文件并将其存储为var1,另一个文件存储为var2,使用

file=$var1
file=$var2

稍后在我的代码中,我需要删除var2并创建一个与原始var2同名的var1链接。命令:

rm var2
ln var1 var2 

创建错误消息 我想我需要创建一个只包含文件var2名称的临时变量,但我不知道该怎么做。有任何想法吗?谢谢!

2 个答案:

答案 0 :(得分:3)

我认为你只需要一个“$”符号:

# Set a variable
myvar=moose

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

在你的情况下:

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

答案 1 :(得分:1)

你使用的是哪个shell?什么操作系统?

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",而命令long会删除三个文件 - namedfilerm "$var1" ln "$var1" "$var2" 。 然后那会为你做的事情:

{{1}}