연결된 단어 수로 변수를 곱할 수 없습니다.

연결된 단어 수로 변수를 곱할 수 없습니다.

Linux의 bash에는 다음과 같은 것이 있습니다.

some_variable= ls *somepattern* | xargs cat | wc -c

예를 들어 다음과 같이 특정 금액을 곱하고 싶습니다.

another_variable = $(($some_variable * 10))

그런데 오류가 발생해요

  -bash: * 100: syntax error: operand expected (error token is "* 100")

some_variable왜 곱하면 안되나요 wc?

답변1

당신은 곱셈을 얻지 못하고 실제로 거기에 변수를 할당하지 않습니다. 주위에는 공백이 있어서는 안 됩니다 =. 다음이 필요합니다.

some_variable=some_value

다음으로 변수를 할당하려면산출명령의 경우 명령 대체를 사용해야 합니다.

some_variable=$(some_command)

또는 여전히 지원되지만 더 이상 사용되지 않는 백틱:

some_variable=`some_command`

따라서 원하는 것은 다음과 같습니다.

some_variable=$(ls *somepattern* | xargs cat | wc -c)

하지만 이렇게 하는 것이 더 좋습니다:

some_variable=$(cat *somepattern* | wc -c)

이것을 갖고 나면 다음을 수행할 수 있습니다.

another_variable=$(($some_variable * 10))

마지막으로 오류의 원인은 첫 번째 부분에서 설명한 대로 변수가 비어 있어서 결국 다음을 실행하게 된다는 것입니다.

$ another_variable = $(( * 10))
bash: * 10: syntax error: operand expected (error token is "* 10")

관련 정보