2つのエコーを別々の行にあるテキストファイルに出力する方法

2つのエコーを別々の行にあるテキストファイルに出力する方法

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"

関連情報