+ -
当前位置:首页 → 问答吧 → 如何用shell实现下面任务

如何用shell实现下面任务

时间:2011-05-19

来源:互联网

在一个软件源码的发布包里,发现一个configure。其内容如下:
代码:
$ cat configure
#! /bin/sh
# run the automatically generated configure script
CONFIG_STATUS=auto/config.status \
        auto/configure "$@" --srcdir="${srcdir:-.}" --cache-file=auto/config.cache
result=$?

# Stupid autoconf 2.5x causes this file to be left behind.
if test -f configure.lineno; then rm -f configure.lineno; fi

exit $result

关于这段SHELL代码里面,CONFIG_STATUS变量的赋值,本人是在看不懂。
不知有没高人能够指点一二?

作者: nothing9k   发布时间: 2011-05-19

\是分行,其他是命令和参数。还有一些bash的字符串处理,{}那些,是bash的缺省赋值的写法。

作者: eexpress   发布时间: 2011-05-19

eexpress 写道:
\是分行,其他是命令和参数。还有一些bash的字符串处理,{}那些,是bash的缺省赋值的写法。



你好,谢谢你的回复。
\ 这个代表分行,
那么整个语句应该是
代码:
CONFIG_STATUS=auto/config.status         auto/configure "$@" --srcdir="${srcdir:-.}" --cache-file=auto/config.cache

如果暂时不管" "$@" --srcdir="${srcdir:-.}" --cache- "这些东西,那么整个语句应该是:
代码:
CONFIG_STATUS=auto/config.status   auto/configure

那么如何去看懂这个呢?
为此我还写了测试程序:
代码:
$ cat configure
#!/bin/sh
CONFIG_STATUS=./test_1.sh \
./test_2.sh "$@"
echo CONFIG_STATUS is ${CONFIG_STATUS}
result=${?}
echo result is ${result}
exit ${result}
$ cat test_1.sh
#!/bin/bash
echo "This is generated by script test_1.sh"
$ cat test_2.sh
#!/bin/bash
echo "This is generated by script test_2.sh"
$ ./configure
This is generated by script test_2.sh
CONFIG_STATUS is
result is 0

我看到的结果是test_1.sh根本不执行,而CONFIG_STATUS也没有赋值成功。
心里为这纠结了好久。

作者: nothing9k   发布时间: 2011-05-19

热门下载

更多