在Z shell脚本中执行gcc时出错

时间:2012-07-25 02:18:33

标签: zsh

如果我运行此脚本:(注意:编辑以反映答案1)

#!/usr/bin/env zsh

setopt shwordsplit

if [[ -f $1 ]]
then
   echo "will compile $1"
else
  echo "ERROR: $1 NOT found"
  exit 1
fi

gcc_options="  -c -std=c99 -Wall -Wextra  "

echo "gcc_options: ${gcc_options}"

gcc " ${=gcc_options} " " ${=1} "

if [[ $? -eq 0 ]]
then
   echo "gcc compile worked"
else
   echo "error in gcc compile"
fi

gcc "${=gcc_options}" "${=1}"

if [[ $? -eq 0 ]]
then
   echo "gcc compile worked"
else
   echo "error in gcc compile"
fi

两个编译都失败了。

输出是:


将编译my_file.c
gcc_options:-c -std = c99 -Wall -Wextra
gcc:错误::没有这样的文件或目录
gcc:错误::没有这样的文件或目录
gcc:错误:my_file.c:没有这样的文件或目录
gcc:致命错误:没有输入文件编译终止 gcc编译中的错误
gcc:错误::没有这样的文件或目录
gcc:错误::没有这样的文件或目录
gcc编译中的错误

1 个答案:

答案 0 :(得分:0)

首先改变:

gcc " $gcc_options $1"

要:

gcc "$gcc_options" "$1"

如果其中一些变量包含多个字词,您可能需要启用shwordsplit(请参阅here),这也可以基于每个变量(${=VAR})完成。

gcc "${=gcc_options}" "${=1}"

更新

我犯了一个错误,你绝对不想在$gcc_options上引用,所以应该是${=gcc_options}。如果需要引用$1取决于$1是否包含空格。所以这应该做:

gcc ${=gcc_options} $1