状況によってはカスタムグローバル変数を使用しようとしてもcat <<eof>> filename
機能しません。私はこのフォーラムの簡単な例cat << eof
で私が望むものを見つけ、その結果ここにつながりました。http://www.tldp.org/LDP/abs/html/here-docs.html。しかし、私は以下のようなことをしたいと思います>>
:filename
いいえ働く):
#!/bin/bash
#after testing I will define this in .bashrc or somewhere?
set IP_ADDR = "123.123.123.123"
#empty the file in case there is something in it
truncate -s 0 sample.conf
# open a file and append
cat <<EOF >> sample.conf
This is my sample config file
Server IP = $IP_ADDR
this is the last line of my sample config file
EOF
#print the file to verify
cat sample.conf
これにより空の文字列が生成されます。Server IP =
sed
欠落している変数値を除いてファイルを作成した場合は機能しますが、IPアドレス(またはその他の項目)をリテラル文字列として簡単に使用することはできません。
また、スクリプトの実行時にコマンドライン引数として使用するリテラル文字列がない可能性があります。$1
コードブロック内で動作しますcat << eof >> filename
。私はそれを証明した。しかし、このスクリプトを実行するとすぐに値にアクセスできなくなります。
答え1
set IP_ADDR = "123.123.123.123"
不正確です。以下を行う必要があります。
IP_ADDR="123.123.123.123"
(空白なし)。