相关疑难解决方法(0)

为什么这个脚本在终端中工作而不是从文件中工作?

我将这个 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线吗?

bash string

19
推荐指数
2
解决办法
3万
查看次数

标签 统计

bash ×1

string ×1