1. ホーム
  2. スクリプト・コラム
  3. その他

[解決済み】bash : 不正な代用品

2021-12-31 19:32:30

質問

コードは次のとおりです。

#!/bin/bash

jobname="job_201312161447_0003"
jobname_pre=${jobname:0:16}
jobname_post=${jobname:17}

ubuntuで実行すると、エラーが発生します。

bash : Bad Substitution

解決方法は?

デフォルトのシェル( /bin/sh ) を指しています。 dash ではなく bash .

me@pc:~$ readlink -f $(which sh)
/bin/dash

そこで、もし chmod +x your_script_file.sh で実行し、さらに ./your_script_file.sh で実行した場合、または bash your_script_file.sh であれば、問題なく動作するはずです。

で実行すると sh your_script_file.sh は動作しません。なぜなら、ハッシュバング行は無視され、スクリプトは dash は、この文字列置換構文に対応していません。