sh -x 与 bash -x 在运行 shell 脚本时



下面是我用来创建PIE图的shell脚本。

#! /bin/bash
TEMP=$(mktemp -t chart.html)
QUERY1=36
QUERY2=64
cat > $TEMP <<EOF
<html>
  <head>
    <!--Load the AJAX API-->
    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <script type="text/javascript">
      // Load the Visualization API and the piechart package.
      google.load('visualization', '1.0', {'packages':['corechart']});
      // Set a callback to run when the Google Visualization API is loaded.
      google.setOnLoadCallback(drawChart);
      // Callback that creates and populates a data table,
      // instantiates the pie chart, passes in the data and
      // draws it.
      function drawChart() {
        // Create the data table.
        var data = new google.visualization.DataTable();
        data.addColumn('string', 'Title');
        data.addColumn('number', 'Value');
        data.addRows([
          ['Error Percentage', $QUERY1],
          ['No Error Percentage', $QUERY2]
        ]);
        // Set chart options
        var options = {'title':'Errors',
                       'width':400,
                       'height':300};
        // Instantiate and draw our chart, passing in some options.
        var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
        chart.draw(data, options);
      }
    </script>
  </head>
  <body>
    <!--Div that will hold the pie chart-->
    <div id="chart_div"></div>
  </body>
</html>
EOF
# open browser
case $(uname) in
   Darwin)
      open -a /Applications/Google Chrome.app $TEMP
      ;;
   Linux|SunOS)
      firefox $TEMP
      ;;
 esac

问题陈述:-

我将上述文件保存为chart.sh.每当我尝试将上述chart.sh文件运行为sh -x chart.sh

我总是得到错误,因为-

syntax error at line number 3: `TEMP=$' unexpected

但是当我尝试将上述sh文件运行为-

bash -x chart.sh

然后我没有得到任何error.为什么会这样?我的 shell 脚本中是否有任何问题,假设如果我需要像sh -x chart.sh一样运行它,那么我需要在我的 shell 脚本中进行更改吗?

我正在运行SunOS.

shbash可以指向完全不同的可执行文件。sh是某些系统上bash的象征性链接这一事实不应使您假设在任何地方都是如此。如果需要bash,请明确使用它。

编辑(mpapis):另请注意,即使您通过sh调用bash,它的行为也不完全相同。

有关如何设置 PATH 变量以调用 POSIX 兼容版本的 sh 和其他工具的信息,请参阅此页面:http://docs.oracle.com/cd/E19082-01/819-2252/6n4i8rtus/index.html。

相关内容

  • 没有找到相关文章