web-dev-qa-db-ja.com

シェルスクリプトを使用してコンテンツを含むファイルを作成する

少ないファイルでサーバーを構成する必要があり、プログラムでそれを行いたいです。

/home/a.config、/var/spool/b.config、/etc/c.configなどのファイルを作成する必要があります

上記のファイルにはいくつかの内容(複数行)があります。

複数の行(約10)で3つのファイルすべてを作成できる1つのシェルスクリプトを作成します。 CATコマンドを使用してそれを行う方法を知りたいです。 (シェルスクリプト内)。

私はこのように見える

echo " going to create  /home/a.config"

cat "HOW CAN I HAVE MULTIPLE LINES HERE?? " >  /home/a.config 

ありがとう

36
Mahes

ヒアドキュメントを使用できます。

cat <<EOF >/home/a.config
first line
second line
third line
EOF

これらのいくつかを同じスクリプトに配置できます。

74

file = "/ tmp/test.txt"
echo "最初の行の追加"> $ file
echo "最初の行の追加を置換"> $ file
echo「2行目の追加」>> $ file
echo "3行目の追加" >> $ file
cat $ file

>コンテンツを追加/置換します(ここでは実際のコンテンツは2行目で置換されます)
>>追加

結果
最初の行の追加が置き換えられました
2行目の追加
3行目の追加

9
Allwin

そのようです:

#!/bin/bash

var="your text"
echo "simply put,
just so: $var" > a.config

詳細については、「 abs の入出力部分」を参照してください。
お役に立てれば。

6
Victor Sorokin

テキストに$ 1や$ HOMEDIRなどの変数がある場合、これらは通常評価され、実際の値に置き換えられます。これらが置換されないようにするには、開始制限文字列(下の例ではEOF)を単一引用符'EOF'、二重引用符"EOF"で引用するか、その前にバックスラッシュ\EOFを付ける必要があります

終了制限文字列はそのままです。 EOF

これは、シェルスクリプトをファイルに書き込む場合に特に便利です。

cat << 'EOF' >/etc/rc.d/init.d/startup
case $1 in
    start)
        start 
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        start
        ;;
    status)
       pid=$(Tomcat_pid)
        if [ -n "$pid" ]
        then
           echo "Tomcat is running with pid: $pid"
        else
           echo "Tomcat is not running"
        fi
        ;;
esac

EOF

Here Documents でオフになっている例19.7のパラメーター置換を参照してください

2
Deepak Rao
>\#!/bin/bash
>
>var="your text" <br>
>echo "simply put, <br>
>just so: $var" > a.config

また、特定の文字をエスケープして、しようとしていることを妨げないようにする必要があることに注意してください。たとえば、$ `と"は、バックスラッシュを前に付けない限り、このようなステートメントをすべて中断します。つまり、\ `\ $または\"

以下を定義すると:

var = "100"

以下は期待どおりに動作しません。

エコー「簡単に言えば、
ちょうど私を「貸して」US $ $ var」> a.config

しかし、以下は正常に機能します。

エコー「簡単に言えば、
ちょうど\ "lend \" me US\$ $ var "> a.config

1
scotjam1981