터미널에서 어떻게 새 변수를 설정하고 값을 할당할 수 있나요? 긴 파일 이름을 가진 두 파일을 비교한 다음 다른 작업도 수행하고 싶다고 가정해 보겠습니다. 파일 이름이 길기 때문에 두 개의 변수를 만들고 각 변수에 값을 할당하고 자리 표시자로 사용하고 싶습니다. 다음과 같은 것이 필요합니다.
set var1 = 'long-file-name1'
set var2 = 'long-file-name2'
diff var1 var2
답변1
귀하의 질문에 있는 의사 코드(또는 다른 셸이나 프로그래밍 언어의 코드)는 다음 Bash 명령으로 변환됩니다.
var1='long-file-name1'
var2='long-file-name2'
diff "$var1" "$var2"
구문 은 다음 $var1
과 같습니다매개변수 확장. 그러면 변수가 var1
해당 값(이 경우에는 변수에 저장된 파일 이름)으로 대체됩니다. 따옴표가 없는 매개변수 확장 트리거단어 분리("필드 분할"이라고도 함) 및글로빙("파일 이름 확장" 및 "경로 이름 확장"이라고도 함) 일반적으로 추가 확장이 발생하는 것을 원하지 않습니다.당신이 그것을 원한다는 것을 구체적으로 아는 경우를 제외하고, 당신은해야꼭 동봉하세요모든 매개변수 확장 발생큰따옴표. (작은따옴표더욱 강력해 매개변수 확장도 방지할 수 있습니다.)
그러면 diff
저장된 파일 이름이 var1
첫 번째 명령줄 인수로 전달되고 저장된 파일 이름이 var2
두 번째 명령줄 인수로 전달되어 명령이 실행됩니다.이로 인해 diff
파일의 내용이 비교됩니다., 의도한 대로 다음을 실행한 것과 같습니다.
diff 'long-file-name-1' 'long-file-name-2'
내가 이 명령을 사용하지 않았다는 것을 알게 될 것입니다 export
.왜냐하면 이 경우 export
명령은 다음과 같습니다.필요하지도 적절하지도 않음당신이 하고 있는 일 때문에. 변수의 값을 쉘에서만 확장해야 하는 경우--쉘에서 시작된 프로그램에 의해 액세스됨--그러면 를 사용할 필요가 없습니다(사용해서는 안 됩니다) export
.
시스템에 파일 이름을 명령줄 인수로 사용하지 않고 호출된 환경 변수에서 파일 이름을 읽는 이상한 명령이 있는 경우 변수 diff
를 내보내야 합니다. 그러나 그것은 작동하는 방식이 아닙니다 . 명령 이 변수에 액세스하지 않으며 해당 변수에 대해 아무것도 모릅니다. 쉘은 이를 확장하여 에 전달하는 인수를 생성합니다 .var1
var2
diff
diff
diff
답변2
간단히 할당하여 bash의 변수에 파일 이름을 저장할 수 있습니다
예를 들어:variable=filename && variable2=filename2
diff
그런 다음 다음과 같은 변수를 사용하여 두 파일을 만들 수 있습니다diff $variable $variable2
주의: 파일 이름에 공백이 있는 경우 특히 작업을 수행할 때 파일 이름과 변수를 모두 큰따옴표로 묶는 것이 가장 좋습니다.