Bash
如何在單獨的行上將兩個迴聲輸出到文本文件
所以我有一個 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"