2012-01-24 4 views
-3

파일 이름을 변수에 저장하여 파일을 삭제 한 후 원본과 동일한 이름으로 새 파일을 만들 수있는 방법이 필요합니다. 어떻게해야합니까? 예를 들어파일 이름을 변수로 저장

, 내가 파일에 걸릴 VAR1로 저장하고 VAR2 다른로 나중에 내 코드에서

file=$var1 
file=$var2 

를 사용하여, 나는 VAR2를 삭제하고 같은 이름으로 VAR1 수있는 링크를 만들어야합니다 원래 var2. 명령 :

rm var2 
ln var1 var2 

내가 파일 VAR2의 이름 만 보유하고 임시 변수를 만들 필요가 있다고 생각 오류 메시지 를 생성하지만 할 방법을 모르겠어요. 어떤 아이디어? 감사! 귀하의 경우에는

# Set a variable 
myvar=moose 

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

:

+9

이 질문에 (그리고 다른 최근 두 사람을) 분명히 당신이 정말로 재생하거나 ""구문을 추측 "을 시도하지 쉘 스크립트 책을 얻을 필요가 있다고 보여 실패 할 때 SO에게 물어보십시오. " IMHO, 답을주는 것만으로도 당신을 돕는 것은 정말로 당신에게 불만이 될 것입니다. – SiegeX

답변

2

나는 당신이 단지 "$"기호가 필요하다고 생각

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

사용중인 쉘? 어떤 OS인가?

#!/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 

그러나 맥 OS X ln 다른 구문에서 당신이 ln에 인수를 전환해야 : 리눅스와 BASH와

이 될 것

ln $var2 $var1 

편집 : 또한, 문제는 파일 경로에 공백이있는 파일 경로를 사용하는 것일 수 있으므로 bash는 "no such file or directory" 오류를 표시합니다. rm의 구문 때문에 파일을 찾을 수 없습니다. - long, namedfile이 스크립트는 차례로, 세 개의 파일을 삭제 명령 "rm long named file"를 실행 않습니다

var1='long named file' 
rm $var1 

예를 들면 다음과 같습니다. 그런 다음 당신을 위해 일을 할 것입니다 :

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

나는 bash를 사용하고 있습니다. 내가 '파일'에서했던 것처럼 변수를 선언하면 코드에서 파일을 처리 할 수 ​​없습니다. – user1161080

+0

@ user1161080 정교하게 만들 수 있습니까? 처리의 정확한 문제점은 무엇입니까? 스크립트를 실행하는 동안 경고/오류가 있습니까? –

+0

@ user1161080 답변을 수정했습니다. 한마디로'rm "$ var1"'과'ln "$ var1" "$ var2"'를 사용하십시오. –

관련 문제