あるスクリプトの内容を別のスクリプトにコピー

あるスクリプトの内容を別のスクリプトにコピー

私はUNIXに初めてアクセスし、現在Bashを学ぶことを試みています。

xyz.shabc.sh&​​3つのスクリプトがありますwow.sh。コンテンツを使用するxyz.shようにコピーしたいです。つまり、あるスクリプトを別のスクリプトにコピーするスクリプトです。wow.shabc.sh

xyz.sh:

echo "\n code $code \n"

abc.sh:

while read line
do
   echo $line >> wow.sh
done < xyz.sh

abc.shが実行されると、wow.shの内容は次のようになります。

echo "n code $code n"

\n が n に変換されます。なぜこれが起こるのかを説明できる人がいて、\ nを\ nに保つ解決策はありますか?

また、以前に同様の質問をした方がいる場合は、リンクを提供してください。見つかりません。

答え1

xyz.shに(内容)を追加する場合は、wow.sh最も簡単な方法は次のとおりです。

cat xyz.sh >> wow.sh

同じ結果を得るためにこれを使用するのは、ビューreadほど簡単ではありません。\シェルの特殊文字です。このオプションを使用する必要があります-r。つまり、次のことを意味します。

    -r      do not allow backslashes to escape any characters

catこれは基本的に行われます。とにかく、readこれを行うのに適したツールではありません。これら2つのコマンドの構文を比較すると、直感的に同じ結果がわかります。

興味のある別のコマンドがあります。sourceとも呼ばれる組み込みコマンドです.。スクリプトからファイルをインポートすると、ソースファイルの内容がスクリプトにあるかのように機能します。したがって、次の行を入力してくださいwow.sh

. xyz.sh

または

source xyz.sh

toの内容はコピーされず、xyz.sh実行時にwow.shスクリプトにあるかのように実行されます。もちろん、これはスクリプトの実行中にファイルが存在すると仮定します。xyz.shwow.shxyz.shwow.sh

関連情報