当前位置: 技术问答>linux和unix
脚本文件程序表达式问题
来源: 互联网 发布时间:2016-03-12
本文导语: 1:我在一个脚本文件里发现如下: # Change or override these to your taste. TARBALLS_DIR=${TARBALLS_DIR-$TOP_DIR/tarballs} RESULT_TOP=${RESULT_TOP-$TOP_DIR/result} PREFIX=${PREFIX-$RESULT_TOP/$TOOLCOMBO/$TARGET} TARBALLS_DIR,RESULT_TOP,PREFIX这三个变量在...
1:我在一个脚本文件里发现如下:
# Change or override these to your taste.
TARBALLS_DIR=${TARBALLS_DIR-$TOP_DIR/tarballs}
RESULT_TOP=${RESULT_TOP-$TOP_DIR/result}
PREFIX=${PREFIX-$RESULT_TOP/$TOOLCOMBO/$TARGET}
TARBALLS_DIR,RESULT_TOP,PREFIX这三个变量在之前已经定义了,为什么这里又要这样做?
我在前面及后面使用echo打出这三个的值,没有什么变化
另外,我看不懂这三个是怎么执行解释的?
2:
arg=http://www.kegel.com/crosstool/$PTXDIST_DIR.tar.gz
ARCHIVE_NAME=`echo $arg | sed 's,.*/,,;'`
结果是ARCHIVE_NAME=$PTXDIST_DIR.tar.gz
为什么sed 's,.*/,,;'这样表达的,sed 's,*/,,;'却不行,这里面的那个.号有什么作用?
# Change or override these to your taste.
TARBALLS_DIR=${TARBALLS_DIR-$TOP_DIR/tarballs}
RESULT_TOP=${RESULT_TOP-$TOP_DIR/result}
PREFIX=${PREFIX-$RESULT_TOP/$TOOLCOMBO/$TARGET}
TARBALLS_DIR,RESULT_TOP,PREFIX这三个变量在之前已经定义了,为什么这里又要这样做?
我在前面及后面使用echo打出这三个的值,没有什么变化
另外,我看不懂这三个是怎么执行解释的?
2:
arg=http://www.kegel.com/crosstool/$PTXDIST_DIR.tar.gz
ARCHIVE_NAME=`echo $arg | sed 's,.*/,,;'`
结果是ARCHIVE_NAME=$PTXDIST_DIR.tar.gz
为什么sed 's,.*/,,;'这样表达的,sed 's,*/,,;'却不行,这里面的那个.号有什么作用?
|
它的意思很明确啊,如果之前定义了TARBALLS_DIR是有内容,那么就会从TARBALLS_DIR中删除$TOP_DIR/tarballs,然后再赋给自己
相当于C++中的a = a - b;
相当于C++中的a = a - b;
|
.*匹配任意一个字符0次或者多次