私はUNIXに初めてアクセスし、現在Bashを学ぶことを試みています。
xyz.sh
、abc.sh
&3つのスクリプトがありますwow.sh
。コンテンツを使用するxyz.sh
ようにコピーしたいです。つまり、あるスクリプトを別のスクリプトにコピーするスクリプトです。wow.sh
abc.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.sh
wow.sh
xyz.sh
wow.sh