私はUbuntu 14.04.02 32ビットを使用しています。
いくつかのシェルプログラミング中にshコマンドでスクリプトを実行すると、時々エラーが発生することがわかりました。
shコマンドが#!/bin/bashの代わりにダッシュシェルを呼び出すためですか?
選択コマンドの使用に問題があります。
./scriptName.sh で実行するとすべてがうまくいきますが、sh scriptName.sh では構文エラーが報告されます。なぜこれが起こるのですか?
答え1
スクリプトがbash構文を使用している場合は、始める必要があります#!/bin/bash
。スクリプトを実行すると、/path/to/script
すべてがうまくいきます。インタプリタ(シェル)を明示的に呼び出す場合は、正しいインタプリタ、つまりbash
notsh
または何かを呼び出す必要がありますperl
。
多くのバリエーションがありますsh
。バッシュもその一つです。ダッシュは別のものです。 Dashはbashよりも機能が少なくなりますが、より高速でメモリの使用量が少なくなります。これがUbuntuがダッシュを使用することを選択した理由ですsh
。 bashのアドインが必要な場合は、とにかく明示的に呼び出す必要があります。