Bash

如何在單獨的行上將兩個迴聲輸出到文本文件

  • April 20, 2021

所以我有一個 shell 腳本math.sh,它接受一個數字作為參數,並回顯一個添加到它並從中減去一個:

#!/bin/bash

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

而我的另一個 shell 腳本execute.sh基本上將 math.sh 和一個文本文件作為參數並將 math.sh 的輸出寫入文本文件。

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

但是,兩個迴聲在同一行輸出到文本文件:添加:$(($1 ++))減去:$(($1 --)) 當我需要它在單獨的行上時,例如:

添加: $ (( $ 1 ++))

減去: $ (( $ 1 –))

如果不編輯 math.sh,我將如何做到這一點?因為我的 execute.sh 需要能夠在單獨的行上將任何 shell 腳本輸出到文本文件,而不僅僅是 math.sh。

問題是缺少引號,應該是:

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

這是必需的,因為否則 bash 將處理變數內的任何特殊字元,例如空格、換行符、星號 (*) 等。

在這種情況下,換行符將參數分解為多個參數,從而echo將它們與空格連接起來。


請注意,這是將第一個參數本身列印到文件中。

要列印您的內容$1請執行以下操作:

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

列印你會做的輸出:$1

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

如果您還希望變數的更改反映在目前腳本中,您可以獲取它:

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

引用自:https://unix.stackexchange.com/questions/645905