そして両方とも多くのKornシェルスクリプト(ksh)ksh
に基づいているため、shebangとファイル拡張子が変更されると、Bourne-againシェルスクリプト(bash)として実行されます。bash
sh
$ bash script.bash
代わりに電話してください$ ksh script.ksh
。
"files" というディレクトリで ksh を置き換え、スクリプトのファイル拡張子を変更するデフォルトのスクリプトがあります。
#!/bin/bash/
#replace instances
find ./files -type f - exec sed -i.bak "s/ksh/bash/g" {} \;
#Change extensions
for f in ./files/*.ksh;
do mv "$f" "./files/""$(basename "$f" .ksh).bash"
done
#Clean up
rm ./files/*.bak
このスクリプトは動作し、上記のタスクを実行しますが、kshスクリプトをbashに変換するのに十分ですか、それとも考慮していない条件がありますか?
ベストアンサー1
スクリプトは実際に役に立つことはありません。 bashを明示的に使用して実行すると、拡張子は重要ではなく、shebang行は無視されます。次のコマンドを実行すると、スクリプトとまったく同じ結果が得られます。
bash script.ksh
問題は構文の違いです。これはあなたが解決しなければならないでしょうそれ以外の場合は、bashを使用してスクリプトを実行すると完了します。