我将这个 shell 脚本保存在一个文件中:它执行一些基本的字符串替换。
#!/bin/sh
html_file=$1
echo "html_file = $html_file"
substr=.pdf
pdf_file="${html_file/.html/.pdf}"
echo "pdf_file = $pdf_file"
Run Code Online (Sandbox Code Playgroud)
如果我将它粘贴到命令行中,它工作正常:
$ 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"
Run Code Online (Sandbox Code Playgroud)
给
html_file = /home/max/for_pauld/test_no_base64.html
pdf_file = /home/max/for_pauld/test_no_base64.pdf
Run Code Online (Sandbox Code Playgroud)
这是上面 echo 的输出 - 它按预期工作。
但是,当我调用脚本时,
$ saucer "/home/max/for_pauld/test_no_base64.html"
Run Code Online (Sandbox Code Playgroud)
我得到这个输出:
html_file = /home/max/for_pauld/test_no_base64.html
/home/max/bin/saucer: 5: /home/max/bin/saucer: Bad substitution
Run Code Online (Sandbox Code Playgroud)
我的脚本使用的是不同版本的 bash 还是什么?我需要改变我的shebang线吗?