このシェルスクリプトをファイルに保存しました。基本的な文字列の置換を行います。
#!/bin/sh
html_file=$1
echo "html_file = $html_file"
substr=.pdf
pdf_file="${html_file/.html/.pdf}"
echo "pdf_file = $pdf_file"
コマンドラインに貼り付けると、正常に機能します。
$ html_file="/home/max/for_pauld/test_no_base64.html"
echo "html_file = $html_file"
substr=.pdf
pdf_file="${html_file/.html/.pdf}"
echo "pdf_file = $pdf_file"
与える
html_file = /home/max/for_pauld/test_no_base64.html
pdf_file = /home/max/for_pauld/test_no_base64.pdf
これが上記のechoの出力です-意図したとおりに機能しています。
しかし、スクリプトを呼び出すと、
$ saucer "/home/max/for_pauld/test_no_base64.html"
私はこの出力を取得します:
html_file = /home/max/for_pauld/test_no_base64.html
/home/max/bin/saucer: 5: /home/max/bin/saucer: Bad substitution
私のスクリプトは別のバージョンのbashなどを使用していますか?シバンのラインを変更する必要がありますか?
sh
とbash
。読み上げます。あなたのコメントを答えにするのが面倒なら、私はそれを正しいとマークします。
#!/usr/bin/env bash
します。あなたのシバンとして、そして必要に応じて、posixlyに定義された置換を使用しますが、移植性の警告があります。そして読む:unix.stackexchange.com/a/48787/27616