스크립트에서 인수의 값을 변경하는 방법은 무엇입니까? 변경되지 않습니다. /home/mika/script: line 2:

나는 다음과 같은 작은 간단한 스크립트를 시도했다.

#!/bin/bash
$1="bar"
echo $1

그러나 내가 실행할 때 ./script foo오류가 발생하고 값이 변경되지 않습니다.

/home/mika/script: line 2: foo=bar: command not found
foo

나는 당신이 당신의 스크립트에 전달하는 첫 번째 논쟁은 $ 1이라는 것을 알고 있습니다. 그러나 이것조차도 나는 그 가치를 바꾸고 싶다.



답변

내장을 사용할 수 있습니다 set:

#!/bin/bash
set -- "bar"
echo $1

소스 및 추가 정보 : 명령 행 인수-bash를 변경하십시오 .


답변

해당 변수를 직접 변경할 수 없습니다. 넌 말할 수있다:

x=$1
echo $x

그런 다음 $x대신 사용할 수 있습니다

를 사용하면 $1=bar을 첫 번째 매개 변수로 즉시 대체 $1할 수 있으며, 기본적으로 "foo=bar"이며 변수 “foo”가 아니라 “foo”명령으로 해석됩니다.


답변

사용을 사용하지 마십시오 $1,이에 대한bash 및 기타 쉘$1 는 스크립트에 전달하는 첫 번째 인수입니다.

#!/bin/bash
echo $1

위와 같이 실행 하면 첫 번째 인수이므로 foo.sh hello인쇄됩니다 hello. 또한 변수를로 참조 var하고 변수의 내용을 로 참조하십시오 $var. 따라서 예상되는 동작을 얻으려면 변수에 다른 이름을 사용하고 $다음을 사용하지 마십시오 .

#!/bin/bash
var="bar"
echo $var