デフォルトでは、viエディタとechoコマンドを使用してSHファイル内に別のSHファイルを作成します。これは元のSHファイルの内容です -
#!/bin/bash
echo "#!/bin/bash" > f1.sh
echo "echo "hello"" > f1.sh
f1はechoコマンドを使用して書きたいSHファイルですが、元のファイルを実行するとf1ファイルは#!bin/bashに書き込まず、echo "hello"コマンドのみを書き込みます。 echo HASHBANG コマンドを echo \#\!/bin/bash で書いてみましたが、正常に動作しませんでした。それでは、viエディタでechoコマンドを使用して#!bin/bashを他のSHファイルに書き込む方法は?
答え1
代わりにこの記事を使用してください。
#!/bin/bash
cat >f1.sh <<'SCRIPT_END'
#!/bin/bash
echo "hello"
SCRIPT_END
これは、シェルが何も妨げることなく、そのままスクリプトを渡してファイルcat
にリダイレクトしますf1.sh
。
コードには多くの問題がありますが、リダイレクトに関連する問題は、リダイレクトを使用するf1.sh
たびに>
ファイルをトリミングまたは空にすることです。これはecho
、コードの2番目のコードが、最初のコードがファイルに書き込んだデータを上書きすることを意味しますecho
。
また、2行目の引用はecho
意味がありません。
Viエディタはこれには関係ありません。