두 개의 에코를 별도의 줄에 있는 텍스트 파일로 출력하는 방법

두 개의 에코를 별도의 줄에 있는 텍스트 파일로 출력하는 방법

math.sh그래서 숫자를 인수로 받아들이고 숫자를 더하고 빼는 것을 에코하는 쉘 스크립트가 있습니다 .

#!/bin/bash

echo "Add: "$(($1 + 1))
echo "Subtract : "$(($1 - 1))

내가 가지고 있는 또 다른 쉘 스크립트는 execute.sh기본적으로 math.sh와 텍스트 파일을 인수로 사용하고 math.sh의 출력을 텍스트 파일에 씁니다.

#! /bin/sh
echo $1 > $2

그러나 둘 다 동일한 줄의 텍스트 파일에 출력을 반영합니다. Add: $(($1 ++))Subtract : $(($1 --)) 다른 줄에서 사용해야 하는 경우 예를 들면 다음과 같습니다.

추가: $(($1++))

빼기: $(($1 --))

math.sh를 편집하지 않고 어떻게 이 작업을 수행할 수 있나요? 내 Execution.sh는 math.sh뿐만 아니라 모든 쉘 스크립트를 별도의 줄에 텍스트 파일로 출력할 수 있어야 하기 때문입니다.

답변1

문제는 따옴표가 누락된 것입니다. 다음과 같아야 합니다.

#!/bin/sh
echo "$1" > "$2"

그렇지 않으면 bash가 공백, 줄 바꿈, 별표(*) 등과 같은 변수 내의 특수 문자를 처리하기 때문에 이것이 필요합니다.

이 경우 개행 문자는 인수를 여러 인수로 나누어 echo공백으로 연결하게 합니다.


이는 첫 번째 인수 자체를 파일에 인쇄합니다.

인쇄하려면콘텐츠여러분 중 일부는 $1다음과 같이 할 것입니다.

#!/bin/sh
cat "$1" > "$2"

인쇄산출여러분 중 일부는 $1다음과 같이 할 것입니다.

#!/bin/sh
./math.sh "$1" > "$2"

변수 변경 사항이 현재 스크립트에 반영되도록 하려면 다음을 사용할 수 있습니다.

#!/bin/sh
. "$1" > "$2"

관련 정보